%{ %} DIGIT [0-9] ID [a-zA-Z_0-9]* KEYWORD and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while OPERATOR "+"|"-"|"*"|"/"|"%"|"^"|"#"|"=="|"~="|"<="|">="|"<"|">"|"="|"("|")"|"{"|"}"|"["|"]"|"::"|";"|":"|","|"."|".."|"..."|"<<"|">>"|"&"|"|"|"//"|"~"|"'"|"--"|"?"|"\""|"\\n" %% {DIGIT}+ { printf("%s", yytext); } {KEYWORD} printf("%s", yytext); (".") printf("%s", yytext); {ID} printf("%s", yytext); (--.) printf("%s", yytext); {OPERATOR} printf("%s", yytext); [ \t\n]+ printf("%s", yytext); . printf( "Unrecognized character: %s\n", yytext ); %% int yywrap() { return 1; } int main(int argc, const char* argv[]) { if ( argc > 0 ) yyin = fopen( "markov_chain.lua", "r" ); else yyin = stdin; puts( "" "" "" " markov_chain.lua" " " "" "" "
"
        );
    yylex();
    puts("
"); return 0; }