// Lexical analyser for truth table assignment // Make sure you use the same token names in you .cup file %% %{ // Define utility functions here. private void err(int pos, String s) { System.out.println("\nError at position " + pos + ": " + s); } private java_cup.runtime.Symbol tok(int k, Object val) { return new java_cup.runtime.Symbol(k, yyline, yychar, val); } %} %function next_token %type java_cup.runtime.Symbol %char %line %ignorecase %eofval{ {return tok(sym.EOF,null); } %eofval} ALPHA=[A-Za-z] DIGIT=[0-9] DIGITS=[0-9]+ NONNEWLINE_WHITE_SPACE=[\ \t\b\012] WHITE_SPACE=[\n\ \t\b\012] STRING_TEXT=(\\\"|[^\n\"]|\\{WHITE_SPACE}+\\)* COMMENT_TEXT=([^/*\n]|[^*\n]"/"[^*\n]|[^/\n]"*"[^/\n]|"*"[^/\n]|"/"[^*\n])* ALPHANUM=[A-Za-z][A-Za-z0-9_]* %% {NONNEWLINE_WHITE_SPACE}+ { /* do nothing */ } \n { return tok(sym.EOF,null); } "&" {return tok(sym.AND,null); } "^" {return tok(sym.AND,null); } "|" {return tok(sym.OR,null);} "->" {return tok(sym.IMP,null); } "!" {return tok(sym.NOT,null); } "~" {return tok(sym.NOT,null); } "(" {return tok(sym.LPAREN,null); } "0" {return tok(sym.ZERO,null); } "F" {return tok(sym.ZERO,null); } "1" {return tok(sym.ONE,null); } "T" {return tok(sym.ONE,null); } ")" {return tok(sym.RPAREN,null); } {ALPHANUM} {return tok(sym.ID,yytext()); } . { System.out.println("\nError at char "+yychar+" line "+yyline); return tok(sym.EOF,null); }