49 lines
1.3 KiB
Plaintext
49 lines
1.3 KiB
Plaintext
%{
|
|
#include "token.h"
|
|
%}
|
|
DIGIT [0-9]
|
|
LETTER [a-zA-Z]
|
|
NAME [a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]
|
|
|
|
%%
|
|
(" "|\t|\n) /* skip whitespace */
|
|
\*>\ ?.* { return TOKEN_COMMENT; }
|
|
IDENTIFICATION { return TOKEN_IDENTIFICATION; }
|
|
DIVISION { return TOKEN_KEYWORD_DIVISION; }
|
|
PROGRAM-ID { return TOKEN_PROGRAM_ID; }
|
|
PROCEDURE { return TOKEN_PROCEDURE; }
|
|
DATA { return TOKEN_KEYWORD_DATA; }
|
|
SECTION { return TOKEN_KEYWORD_SECTION; }
|
|
WORKING-STORAGE { return TOKEN_WORKING_STORAGE; }
|
|
DISPLAY { return TOKEN_DISPLAY; }
|
|
STOP { return TOKEN_STOP; }
|
|
RUN { return TOKEN_RUN; }
|
|
MOVE { return TOKEN_MOVE; }
|
|
TO { return TOKEN_KEYWORD_TO; }
|
|
VARYING { return TOKEN_VARYING; }
|
|
FROM { return TOKEN_KEYWORD_FROM; }
|
|
BY { return TOKEN_KEYWORD_BY; }
|
|
UNTIL { return TOKEN_UNTIL; }
|
|
PERFORM { return TOKEN_PERFORM; }
|
|
END-PERFORM { return TOKEN_END_PERFORM; }
|
|
IF { return TOKEN_IF; }
|
|
END-IF { return TOKEN_END_IF; }
|
|
SPACE { return TOKEN_SPACE; }
|
|
|
|
\+ { return TOKEN_ADD; }
|
|
\- { return TOKEN_SUB; }
|
|
\> { return TOKEN_GREATER_THAN; }
|
|
\< { return TOKEN_LESS_THAN; }
|
|
|
|
"\""[^"]*"\"" { return TOKEN_STRING; }
|
|
"\'"[^']*"\'" { return TOKEN_STRING; }
|
|
"(" { return TOKEN_LEFT_PARENTHESIS; }
|
|
")" { return TOKEN_RIGHT_PARENTHESIS; }
|
|
|
|
|
|
\. { return TOKEN_DOT; }
|
|
{NAME} { return TOKEN_IDENT; }
|
|
{DIGIT} { return TOKEN_INTEGER; }
|
|
%%
|
|
int yywrap() { return 1; }
|