class notes for Feb. 17 taken by Yi-Fan Chien 1) we went over some of the materials needed for project2: CAHRLIT = '(NOT('|\|Unprintable)|\'|\n|\t|\\)' So 'ABCD' would yield an error. BADCHAR1 = "|'(unprintable)'|'"|'\' BADCHAR2 = '(NOT('|EOL))(NOT('|EOL))+ BADCHAR3 = '(NOT(')* EOL) 2) INTRODUCED CONCEPT OF LOOK AHEAD #OF CHARS NEEDED TO LOCATE END OF TOKEN EXAMPLE1: 123 + 456 -> 1 CHAR LOOK AHEAD (NEED BUFFERING) EXAMPLE2: 1.20 -> NEED MORE THAN 1 BUFFER CASE: 1/*P /X ........OTHER COMMENTS */ / * * / ->STATE1---->FINAL_STATE2---->STATE3---->STATE4---->FINAL_STATE5 | | ^ | | | ---->FINAL_STATE ----- NOT(*|/) CASE: FORTRAN ; SPACE IS IGNORED space not ignored -> Do 10 I = 1 . 100 => 7 tokens | | | | space ignored -> Do 10 I| = | 1 . 100 => 3 tokens | | 1 | 2 | 3 token ########################################################################## SCANNER DEF. ------------ ------>|JLEX | LEX|-----> Complete Scanner Class REG. EXPR. + CODE ------------ Question: How to translate Reg. Expr. to F.A ? A B C state1------>state2------>state3------>final-state4 use transition table A B C 1 2 2 3 3 4 4 Step 1) Reg. Expr. -----> Non-Deterministic Finite Automaton (NFA) 2) NFA ------->Deterministic Finite Automaton (DFA) 3) Optimize DFA *********************************************************************** NFA allows: a State1----->state2 | | a | ------->state3 | | a ---------->state4 DFA allows: a State1------->state1 and state2 and state3