71 lines
1.1 KiB
Plaintext
71 lines
1.1 KiB
Plaintext
%namespace Bts.ArithmeticExpressions
|
|
%scannertype ArithmeticExpressionScanner
|
|
%visibility internal
|
|
%tokentype Token
|
|
|
|
%option stack, minimize, parser, verbose, persistbuffer, noembedbuffers
|
|
|
|
Letter [a-zA-Z]
|
|
Identifier {Letter}({Letter}*[0-9]*_*)*
|
|
IntegerConstant -?[0-9]+
|
|
RealConstant -?[0-9]+\.[0-9]+
|
|
ParenthesisOpen \(
|
|
ParenthesisClose \)
|
|
Add \+
|
|
Subtract \-
|
|
Multiply \*
|
|
Divide /
|
|
Equals =
|
|
Comma ,
|
|
|
|
%%
|
|
|
|
{IntegerConstant} {
|
|
yylval.Integer = int.Parse(yytext);
|
|
return (int)Token.INTEGER_CONSTANT;
|
|
}
|
|
|
|
{RealConstant} {
|
|
yylval.Real = double.Parse(yytext);
|
|
return (int)Token.REAL_CONSTANT;
|
|
}
|
|
|
|
{Identifier} {
|
|
yylval.Identifier = yytext;
|
|
return (int)Token.IDENTIFIER;
|
|
}
|
|
|
|
{ParenthesisOpen} {
|
|
return (int)Token.PARENTHESIS_OPEN;
|
|
}
|
|
|
|
{ParenthesisClose} {
|
|
return (int)Token.PARENTHESIS_CLOSE;
|
|
}
|
|
|
|
{Add} {
|
|
return (int)Token.ADD;
|
|
}
|
|
|
|
{Subtract} {
|
|
return (int)Token.SUBTRACT;
|
|
}
|
|
|
|
{Multiply} {
|
|
return (int)Token.MULTIPLY;
|
|
}
|
|
|
|
{Divide} {
|
|
return (int)Token.DIVIDE;
|
|
}
|
|
|
|
{Equals} {
|
|
return (int)Token.EQUALS;
|
|
}
|
|
|
|
{Comma} {
|
|
return (int)Token.COMMA;
|
|
}
|
|
|
|
%%
|