From 5be6fab3b4b4cb8c2ab5c00fc3f65777c596e357 Mon Sep 17 00:00:00 2001 From: AYM1607 Date: Thu, 21 Mar 2019 18:38:52 -0600 Subject: [PATCH] Added all token names --- HW1_holaquetal/parser.out | 5 +++++ HW1_holaquetal/parsetab.py | 9 ++++---- final_lang/lex_yacc.py | 44 +++++++++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/HW1_holaquetal/parser.out b/HW1_holaquetal/parser.out index 4f80ce0..f19e965 100644 --- a/HW1_holaquetal/parser.out +++ b/HW1_holaquetal/parser.out @@ -6,6 +6,7 @@ Rule 0 S' -> phrase Rule 1 phrase -> a QUE TAL Rule 2 a -> HOLA COMA a Rule 3 a -> HOLA +Rule 4 a -> Terminals, with rules where they appear @@ -28,8 +29,10 @@ state 0 (1) phrase -> . a QUE TAL (2) a -> . HOLA COMA a (3) a -> . HOLA + (4) a -> . HOLA shift and go to state 3 + QUE reduce using rule 4 (a -> .) phrase shift and go to state 1 a shift and go to state 2 @@ -68,8 +71,10 @@ state 5 (2) a -> HOLA COMA . a (2) a -> . HOLA COMA a (3) a -> . HOLA + (4) a -> . HOLA shift and go to state 3 + QUE reduce using rule 4 (a -> .) a shift and go to state 7 diff --git a/HW1_holaquetal/parsetab.py b/HW1_holaquetal/parsetab.py index 7021cd1..b34dbd7 100644 --- a/HW1_holaquetal/parsetab.py +++ b/HW1_holaquetal/parsetab.py @@ -6,9 +6,9 @@ _tabversion = '3.10' _lr_method = 'LALR' -_lr_signature = 'COMA HOLA QUE TAL\n phrase : a QUE TAL\n \n a : HOLA COMA a\n | HOLA\n ' +_lr_signature = 'COMA HOLA QUE TAL\n phrase : a QUE TAL\n \n a : HOLA COMA a\n | HOLA\n |\n ' -_lr_action_items = {'HOLA':([0,5,],[3,3,]),'$end':([1,6,],[0,-1,]),'QUE':([2,3,7,],[4,-3,-2,]),'COMA':([3,],[5,]),'TAL':([4,],[6,]),} +_lr_action_items = {'HOLA':([0,5,],[3,3,]),'QUE':([0,2,3,5,7,],[-4,4,-3,-4,-2,]),'$end':([1,6,],[0,-1,]),'COMA':([3,],[5,]),'TAL':([4,],[6,]),} _lr_action = {} for _k, _v in _lr_action_items.items(): @@ -28,6 +28,7 @@ del _lr_goto_items _lr_productions = [ ("S' -> phrase","S'",1,None,None,None), ('phrase -> a QUE TAL','phrase',3,'p_phrase','hola.py',28), - ('a -> HOLA COMA a','a',3,'p_a','hola.py',34), - ('a -> HOLA','a',1,'p_a','hola.py',35), + ('a -> HOLA COMA a','a',3,'p_a','hola.py',35), + ('a -> HOLA','a',1,'p_a','hola.py',36), + ('a -> ','a',0,'p_a','hola.py',37), ] diff --git a/final_lang/lex_yacc.py b/final_lang/lex_yacc.py index cc82957..a3e9ab1 100644 --- a/final_lang/lex_yacc.py +++ b/final_lang/lex_yacc.py @@ -1,2 +1,44 @@ import ply.lex as lex -import ply.yacc as yacc \ No newline at end of file +import ply.yacc as yacc + +tokens = [ + 'program', + 'id', + 'end', + 'doubleColon', + 'coma', + 'integer', + 'real', + 'openBra', + 'closedBra', + 'int', + 'rea', + 'subroutine', + 'parens', + 'openParen', + 'closedParen', + 'read', + 'print', + 'if', + 'then', + 'else', + 'elif', + 'do', + 'swap', + 'exit', + 'string', + 'plus', + 'minus', + 'mul', + 'div', + 'or', + 'and', + 'not', + 'equals', + 'doubleEquals', + 'notEquals', + 'less', + 'more', + 'lessEquals', + 'moreEquals', +] \ No newline at end of file