milly/ref_parser/lexer.x

60 lines
1.1 KiB
Plaintext

/* inf's Flex grammar */
%{
#include "parser.tab.h"
int yywrap();
%}
DIGIT [0-9]
IDENT_START [a-zA-Z_?*+!/=]|"-"
IDENT_CONT {IDENT_START}|{DIGIT}
ESCAPED \\[nt"\\]
STRING_CHAR {ESCAPED}|[[:print:]]{-}["\\]
%%
"true" { return TRUE; }
"false" { return FALSE; }
"case" { return CASE; }
"let" { return LET; }
"in" { return IN; }
"match" { return MATCH; }
"of" { return OF; }
"def" { return DEF; }
"datatype" { return DATATYPE; }
"alias" { return ALIAS; }
"typecheck" { return TYPECHECK; }
"->" { return ARROW; }
"=" { return *yytext; }
"\\" { return *yytext; }
"(" { return *yytext; }
")" { return *yytext; }
"[" { return *yytext; }
"]" { return *yytext; }
"{" { return *yytext; }
"}" { return *yytext; }
"," { return *yytext; }
"|" { return *yytext; }
":" { return *yytext; }
"<" { return *yytext; }
">" { return *yytext; }
[ \t\n]+ ;
#[^\n]* ;
{IDENT_START}{IDENT_CONT}* { return IDENT; }
'{IDENT_START}{IDENT_CONT}* { return PARAM_IDENT; }
{DIGIT}+ { return INT; }
\"{STRING_CHAR}*\" { return STRING; }
%%
int yywrap() {
return 1;
}