60 lines
1.1 KiB
Plaintext
60 lines
1.1 KiB
Plaintext
/* milly'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;
|
|
}
|