diff options
| author | Bicker <bickerkards@tuta.io> | 2019-05-22 17:45:37 +0200 |
|---|---|---|
| committer | Bicker <bickerkards@tuta.io> | 2019-05-22 17:45:37 +0200 |
| commit | 25314fd2aed81aa5281bc3d93dbcc7919368ebe1 (patch) | |
| tree | 1995521ee652e419926de5fced0f2e3b655e70fb /ql/parser/parsetab.py | |
Diffstat (limited to 'ql/parser/parsetab.py')
| -rw-r--r-- | ql/parser/parsetab.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/ql/parser/parsetab.py b/ql/parser/parsetab.py new file mode 100644 index 0000000..b978ef8 --- /dev/null +++ b/ql/parser/parsetab.py @@ -0,0 +1,76 @@ + +# parsetab.py +# This file is automatically generated. Do not edit. +# pylint: disable=W,C,R +_tabversion = '3.10' + +_lr_method = 'LALR' + +_lr_signature = 'leftORleftANDnonassocEQUALSNOT_EQUALSnonassocLESS_EQUALSLESS_THANGREATER_EQUALSGREATER_THANleftPLUSMINUSleftTIMESDIVIDErightNOTAND ASSIGN BOOLEAN COLON DATE DATE_LITERAL DECIMAL DECIMAL_LITERAL DIVIDE DOLLAR EQUALS FALSE FORM GREATER_EQUALS GREATER_THAN IDENTIFIER IF INTEGER INTEGER_LITERAL LEFT_BRACE LEFT_BRACKET LESS_EQUALS LESS_THAN MINUS MONEY NOT NOT_EQUALS OR PLUS RIGHT_BRACE RIGHT_BRACKET RUBLE STRING STRING_LITERAL TIMES TRUEform : FORM IDENTIFIER blockblock : LEFT_BRACE statements RIGHT_BRACEstatements : statement statements\n | statementstatement : if\n | questionquestion : STRING_LITERAL IDENTIFIER COLON typequestion : STRING_LITERAL IDENTIFIER COLON type ASSIGN expressionif : IF condition blockcondition : LEFT_BRACKET expression RIGHT_BRACKETexpression : LEFT_BRACKET expression RIGHT_BRACKETexpression : IDENTIFIERexpression : NOT expressionexpression : MINUS expressionexpression : expression AND expressionexpression : expression OR expressionexpression : expression PLUS expressionexpression : expression MINUS expressionexpression : expression TIMES expressionexpression : expression DIVIDE expressionexpression : expression EQUALS expressionexpression : expression NOT_EQUALS expressionexpression : expression LESS_EQUALS expressionexpression : expression LESS_THAN expressionexpression : expression GREATER_EQUALS expressionexpression : expression GREATER_THAN expressionexpression : FALSE\n | TRUEexpression : DATE_LITERALexpression : INTEGER_LITERALexpression : DECIMAL_LITERALexpression : currency DECIMAL_LITERAL\n | currency INTEGER_LITERALexpression : STRING_LITERALcurrency : DOLLAR\n | RUBLEtype : BOOLEANtype : DECIMALtype : STRINGtype : DATEtype : MONEYtype : INTEGERform : FORM LEFT_BRACEform : FORM IDENTIFIER LEFT_BRACE RIGHT_BRACEstatement : IF condition LEFT_BRACE RIGHT_BRACEcondition : LEFT_BRACKET RIGHT_BRACKET' + +_lr_action_items = {'RIGHT_BRACKET':([17,24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,],[21,-29,-30,-34,-31,-28,43,-12,-27,-32,-33,-14,-13,63,-11,-17,-22,-21,-24,-18,-19,-16,-20,-15,-26,-23,-25,]),'TRUE':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,]),'LEFT_BRACE':([1,3,16,21,43,],[4,5,19,-46,-10,]),'RUBLE':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,]),'DATE_LITERAL':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,]),'MINUS':([17,24,25,26,27,28,30,31,32,33,34,35,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,],[25,-29,25,-30,25,-34,25,-31,-28,48,-12,-27,-32,-33,-14,-13,48,25,25,25,25,25,25,25,25,25,25,25,25,-11,-17,48,48,48,-18,-19,48,-20,48,48,48,48,25,48,]),'INTEGER_LITERAL':([17,22,23,25,27,29,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[26,39,-36,26,26,-35,26,26,26,26,26,26,26,26,26,26,26,26,26,26,]),'TIMES':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,49,-12,-27,-32,-33,49,-13,49,-11,49,49,49,49,49,-19,49,-20,49,49,49,49,49,]),'NOT':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,]),'DOLLAR':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,]),'MONEY':([36,],[60,]),'INTEGER':([36,],[61,]),'AND':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,52,-12,-27,-32,-33,-14,-13,52,-11,-17,-22,-21,-24,-18,-19,52,-20,-15,-26,-23,-25,52,]),'NOT_EQUALS':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,45,-12,-27,-32,-33,-14,-13,45,-11,-17,None,None,-24,-18,-19,45,-20,45,-26,-23,-25,45,]),'ASSIGN':([56,57,58,59,60,61,62,],[-40,-38,-39,76,-41,-42,-37,]),'BOOLEAN':([36,],[62,]),'FORM':([0,],[1,]),'IF':([5,7,8,10,14,19,20,24,26,28,31,32,34,35,37,38,39,40,41,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[11,-5,-6,11,-2,11,-9,-29,-30,-34,-31,-28,-12,-27,-45,-32,-33,-14,-13,-40,-38,-39,-7,-41,-42,-37,-11,-17,-22,-21,-24,-18,-19,-16,-20,-15,-26,-23,-25,-8,]),'LEFT_BRACKET':([11,17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[17,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,]),'PLUS':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,44,-12,-27,-32,-33,-14,-13,44,-11,-17,44,44,44,-18,-19,44,-20,44,44,44,44,44,]),'$end':([2,4,6,13,14,],[0,-43,-1,-44,-2,]),'EQUALS':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,46,-12,-27,-32,-33,-14,-13,46,-11,-17,None,None,-24,-18,-19,46,-20,46,-26,-23,-25,46,]),'IDENTIFIER':([1,12,17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[3,18,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,]),'LESS_THAN':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,47,-12,-27,-32,-33,-14,-13,47,-11,-17,47,47,None,-18,-19,47,-20,47,None,None,None,47,]),'STRING':([36,],[58,]),'COLON':([18,],[36,]),'DATE':([36,],[56,]),'STRING_LITERAL':([5,7,8,10,14,17,19,20,24,25,26,27,28,30,31,32,34,35,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,],[12,-5,-6,12,-2,28,12,-9,-29,28,-30,28,-34,28,-31,-28,-12,-27,-45,-32,-33,-14,-13,28,28,28,28,28,28,28,28,28,28,28,28,-40,-38,-39,-7,-41,-42,-37,-11,-17,-22,-21,-24,-18,-19,-16,-20,-15,-26,-23,-25,28,-8,]),'DECIMAL_LITERAL':([17,22,23,25,27,29,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[31,38,-36,31,31,-35,31,31,31,31,31,31,31,31,31,31,31,31,31,31,]),'OR':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,50,-12,-27,-32,-33,-14,-13,50,-11,-17,-22,-21,-24,-18,-19,-16,-20,-15,-26,-23,-25,50,]),'FALSE':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,]),'DECIMAL':([36,],[57,]),'DIVIDE':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,51,-12,-27,-32,-33,51,-13,51,-11,51,51,51,51,51,-19,51,-20,51,51,51,51,51,]),'LESS_EQUALS':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,54,-12,-27,-32,-33,-14,-13,54,-11,-17,54,54,None,-18,-19,54,-20,54,None,None,None,54,]),'RIGHT_BRACE':([5,7,8,9,10,14,15,19,20,24,26,28,31,32,34,35,37,38,39,40,41,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[13,-5,-6,14,-4,-2,-3,37,-9,-29,-30,-34,-31,-28,-12,-27,-45,-32,-33,-14,-13,-40,-38,-39,-7,-41,-42,-37,-11,-17,-22,-21,-24,-18,-19,-16,-20,-15,-26,-23,-25,-8,]),'GREATER_EQUALS':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,55,-12,-27,-32,-33,-14,-13,55,-11,-17,55,55,None,-18,-19,55,-20,55,None,None,None,55,]),'GREATER_THAN':([24,26,28,31,32,33,34,35,38,39,40,41,42,63,64,65,66,67,68,69,70,71,72,73,74,75,77,],[-29,-30,-34,-31,-28,53,-12,-27,-32,-33,-14,-13,53,-11,-17,53,53,None,-18,-19,53,-20,53,None,None,None,53,]),} + +_lr_action = {} +for _k, _v in _lr_action_items.items(): + for _x,_y in zip(_v[0],_v[1]): + if not _x in _lr_action: _lr_action[_x] = {} + _lr_action[_x][_k] = _y +del _lr_action_items + +_lr_goto_items = {'if':([5,10,19,],[7,7,7,]),'condition':([11,],[16,]),'question':([5,10,19,],[8,8,8,]),'expression':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[33,40,41,42,64,65,66,67,68,69,70,71,72,73,74,75,77,]),'currency':([17,25,27,30,44,45,46,47,48,49,50,51,52,53,54,55,76,],[22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,]),'type':([36,],[59,]),'statements':([5,10,19,],[9,15,9,]),'statement':([5,10,19,],[10,10,10,]),'form':([0,],[2,]),'block':([3,16,],[6,20,]),} + +_lr_goto = {} +for _k, _v in _lr_goto_items.items(): + for _x, _y in zip(_v[0], _v[1]): + if not _x in _lr_goto: _lr_goto[_x] = {} + _lr_goto[_x][_k] = _y +del _lr_goto_items +_lr_productions = [ + ("S' -> form","S'",1,None,None,None), + ('form -> FORM IDENTIFIER block','form',3,'p_form','parser.py',78), + ('block -> LEFT_BRACE statements RIGHT_BRACE','block',3,'p_block','parser.py',83), + ('statements -> statement statements','statements',2,'p_statements','parser.py',89), + ('statements -> statement','statements',1,'p_statements','parser.py',90), + ('statement -> if','statement',1,'p_statement','parser.py',98), + ('statement -> question','statement',1,'p_statement','parser.py',99), + ('question -> STRING_LITERAL IDENTIFIER COLON type','question',4,'p_question','parser.py',105), + ('question -> STRING_LITERAL IDENTIFIER COLON type ASSIGN expression','question',6,'p_question_computed','parser.py',111), + ('if -> IF condition block','if',3,'p_if','parser.py',118), + ('condition -> LEFT_BRACKET expression RIGHT_BRACKET','condition',3,'p_condition','parser.py',123), + ('expression -> LEFT_BRACKET expression RIGHT_BRACKET','expression',3,'p_parenthesis','parser.py',129), + ('expression -> IDENTIFIER','expression',1,'p_variable','parser.py',134), + ('expression -> NOT expression','expression',2,'p_not','parser.py',141), + ('expression -> MINUS expression','expression',2,'p_negative','parser.py',147), + ('expression -> expression AND expression','expression',3,'p_and','parser.py',154), + ('expression -> expression OR expression','expression',3,'p_or','parser.py',160), + ('expression -> expression PLUS expression','expression',3,'p_plus','parser.py',166), + ('expression -> expression MINUS expression','expression',3,'p_minus','parser.py',172), + ('expression -> expression TIMES expression','expression',3,'p_times','parser.py',178), + ('expression -> expression DIVIDE expression','expression',3,'p_divide','parser.py',184), + ('expression -> expression EQUALS expression','expression',3,'p_equals','parser.py',190), + ('expression -> expression NOT_EQUALS expression','expression',3,'p_not_equals','parser.py',196), + ('expression -> expression LESS_EQUALS expression','expression',3,'p_less_equals','parser.py',202), + ('expression -> expression LESS_THAN expression','expression',3,'p_less_than','parser.py',208), + ('expression -> expression GREATER_EQUALS expression','expression',3,'p_greater_equals','parser.py',214), + ('expression -> expression GREATER_THAN expression','expression',3,'p_greater_than','parser.py',220), + ('expression -> FALSE','expression',1,'p_boolean_literal','parser.py',227), + ('expression -> TRUE','expression',1,'p_boolean_literal','parser.py',228), + ('expression -> DATE_LITERAL','expression',1,'p_date_literal','parser.py',233), + ('expression -> INTEGER_LITERAL','expression',1,'p_integer_literal','parser.py',238), + ('expression -> DECIMAL_LITERAL','expression',1,'p_decimal_literal','parser.py',243), + ('expression -> currency DECIMAL_LITERAL','expression',2,'p_money_literal','parser.py',248), + ('expression -> currency INTEGER_LITERAL','expression',2,'p_money_literal','parser.py',249), + ('expression -> STRING_LITERAL','expression',1,'p_string_literal','parser.py',255), + ('currency -> DOLLAR','currency',1,'p_currency','parser.py',261), + ('currency -> RUBLE','currency',1,'p_currency','parser.py',262), + ('type -> BOOLEAN','type',1,'p_boolean','parser.py',268), + ('type -> DECIMAL','type',1,'p_decimal','parser.py',273), + ('type -> STRING','type',1,'p_string','parser.py',278), + ('type -> DATE','type',1,'p_date','parser.py',283), + ('type -> MONEY','type',1,'p_money','parser.py',288), + ('type -> INTEGER','type',1,'p_integer','parser.py',293), + ('form -> FORM LEFT_BRACE','form',2,'p_form_label','parser.py',305), + ('form -> FORM IDENTIFIER LEFT_BRACE RIGHT_BRACE','form',4,'p_empty_form','parser.py',309), + ('statement -> IF condition LEFT_BRACE RIGHT_BRACE','statement',4,'p_empty_if','parser.py',313), + ('condition -> LEFT_BRACKET RIGHT_BRACKET','condition',2,'p_empty_condition','parser.py',317), +] |