<s> from __future__ import print_function <EOL> from ply import lex , yacc <EOL> reserved_list = [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT:end>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> reserved = dict ( ( r , r . upper ( ) ) for r in reserved_list ) <EOL> tokens = [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] + list ( reserved . values ( ) ) <EOL> t_COMMA = r'<STR_LIT:U+002C>' <EOL> t_PLUS = r'<STR_LIT>' <EOL> t_TILDE = r'<STR_LIT>' <EOL> t_EXCLAMATION = '<STR_LIT:!>' <EOL> t_QUESTION = '<STR_LIT>' <EOL> t_PERIOD = '<STR_LIT>' <EOL> t_IRRARROW = r'<STR_LIT>' <EOL> t_REVARROW = r'<STR_LIT>' <EOL> t_LPAREN = r'<STR_LIT>' <EOL> t_RPAREN = r'<STR_LIT>' <EOL> def t_NEWLINE ( t ) : <EOL> r'<STR_LIT:\n>' <EOL> t . lexer . lineno += <NUM_LIT:1> <EOL> return t <EOL> def t_FLOAT ( t ) : <EOL> r'<STR_LIT>' <EOL> try : <EOL> t . value = float ( t . value ) <EOL> except ValueError : <EOL> print ( "<STR_LIT>" % ( t . lineno , t . value ) ) <EOL> t . value = float ( "<STR_LIT>" ) <EOL> return t <EOL> def t_INTEGER ( t ) : <EOL> r'<STR_LIT>' <EOL> try : <EOL> t . value = int ( t . value ) <EOL> except ValueError : <EOL> print ( "<STR_LIT>" % ( t . lineno , t . value ) ) <EOL> t . value = <NUM_LIT:0> <EOL> return t <EOL> def t_ID ( t ) : <EOL> r'<STR_LIT>' <EOL> t . type = reserved . get ( t . value , '<STR_LIT>' ) <EOL> return t <EOL> def t_comment ( t ) : <EOL> r'<STR_LIT>' <EOL> t_ignore = '<STR_LIT>' <EOL> def t_error ( t ) : <EOL> print ( "<STR_LIT>" % ( t . value [ <NUM_LIT:0> ] , t . lineno ) ) <EOL> t . lexer . skip ( <NUM_LIT:1> ) <EOL> def list_helper ( p ) : <EOL> if len ( p ) == <NUM_LIT:1> : <EOL> p [ <NUM_LIT:0> ] = [ ] <EOL> if len ( p ) == <NUM_LIT:2> : <EOL> p [ <NUM_LIT:0> ] = [ p [ <NUM_LIT:1> ] ] <EOL> elif len ( p ) == <NUM_LIT:3> : <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:1> ] + [ p [ <NUM_LIT:2> ] ] <EOL> p [ <NUM_LIT:0> ] = [ v for v in p [ <NUM_LIT:0> ] if v != None ] <EOL> def p_model ( p ) : <EOL> '<STR_LIT>' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:1> ] <EOL> print ( "<STR_LIT>" , p [ <NUM_LIT:0> ] ) <EOL> def p_block_list ( p ) : <EOL> '''<STR_LIT>''' <EOL> list_helper ( p ) <EOL> def p_block ( p ) : <EOL> '''<STR_LIT>''' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:1> ] <EOL> def p_block_empty ( p ) : <EOL> '''<STR_LIT>''' <EOL> def p_parameter_block ( p ) : <EOL> '<STR_LIT>' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:4> ] <EOL> print ( "<STR_LIT>" , p [ <NUM_LIT:2> ] ) <EOL> def p_molecule_type_block ( p ) : <EOL> '<STR_LIT>' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:2> ] <EOL> print ( "<STR_LIT>" , p [ <NUM_LIT:2> ] ) <EOL> def p_species_block ( p ) : <EOL> '<STR_LIT>' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:2> ] <EOL> print ( "<STR_LIT>" , p [ <NUM_LIT:2> ] ) <EOL> def p_reaction_rules_block ( p ) : <EOL> '<STR_LIT>' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:2> ] <EOL> print ( "<STR_LIT>" , p [ <NUM_LIT:2> ] ) <EOL> def p_observables_block ( p ) : <EOL> '<STR_LIT>' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:2> ] <EOL> print ( "<STR_LIT>" , p [ <NUM_LIT:2> ] ) <EOL> def p_parameter_st_list ( p ) : <EOL> '''<STR_LIT>''' <EOL> list_helper ( p ) <EOL> def p_parameter_st ( p ) : <EOL> '''<STR_LIT>''' <EOL> if len ( p ) > <NUM_LIT:2> : <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:1> : <NUM_LIT:4> ] <EOL> def p_number ( p ) : <EOL> '''<STR_LIT>''' <EOL> p [ <NUM_LIT:0> ] = p [ <NUM_LIT:1> ] <EOL> def p_error ( p ) : <EOL> print ( "<STR_LIT>" ) <EOL> print ( p ) <EOL> precedence = ( <EOL> ( '<STR_LIT:left>' , '<STR_LIT>' ) , <EOL> ) <EOL> lex . lex ( ) <EOL> yacc . yacc ( write_tables = <NUM_LIT:0> ) <EOL> def parse ( * args , ** kwargs ) : <EOL> yacc . parse ( * args , ** kwargs ) </s>
