/* SI 413 Fall 2011
* Lab 6
* Scanner specification for the pat language
*/
%{
#include <iostream>
using namespace std;
#include "parsetree.hpp"
#include "pat.tab.hpp"
%}
%option noyywrap
%%
[a-z][a-zA-Z0-9]* { yylval = new ParseTree(yytext); return SYM; }
"*" { yylval = new ParseTree(yytext); return FOLD; }
";" { yylval = new ParseTree(yytext); return STOP; }
":" { yylval = new ParseTree(yytext); return COLON; }
[A-Z][a-zA-Z0-9]* { yylval = new ParseTree(yytext); return NAME; }
"_r" { yylval = new ParseTree(yytext); return REV; }
"[" { yylval = new ParseTree(yytext); return LB; }
"]" { yylval = new ParseTree(yytext); return RB; }
<<EOF>> { return 0; }
[ \t\n]+ { }
. { cerr << "Unrecognized token!" << endl; exit(1); }
%%