Exemple #1
0
    def __init__(self, lexer, parser, parent):
        Scope.__init__(self, 'Try', lexer, parser, parent)

        lexer.next_if('whitespace')
        lexer.expect(self, 'keyword', 'try')
        lexer.skip(['whitespace', 'newline'])
        self.block = Exscript.interpreter.Code.Code(lexer, parser, parent)
Exemple #2
0
    def __init__(self, lexer, parser, parent):
        Scope.__init__(self, 'Try', lexer, parser, parent)

        lexer.next_if('whitespace')
        lexer.expect(self, 'keyword', 'try')
        lexer.skip(['whitespace', 'newline'])
        self.block = Code.Code(lexer, parser, parent)
Exemple #3
0
 def __init__(self, lexer, parser, parent, *args, **kwargs):
     Scope.__init__(self, 'Template', lexer, parser, parent, **kwargs)
     lexer.set_grammar(grammar_c)
     #print "Opening Scope:", lexer.token()
     buffer = ''
     while 1:
         if self.exit_requested or lexer.current_is('EOF'):
             break
         elif lexer.next_if('open_curly_bracket'):
             if buffer.strip() != '':
                 self.add(Execute(lexer, parser, self, buffer))
                 buffer = ''
             if isinstance(parent, Code):
                 break
             self.add(Code(lexer, parser, self))
         elif lexer.current_is('raw_data'):
             if lexer.token()[1].lstrip().startswith('#'):
                 while not lexer.current_is('newline'):
                     lexer.next()
                 continue
             buffer += lexer.token()[1]
             lexer.next()
         elif lexer.current_is('escaped_data'):
             token = lexer.token()[1]
             if token[1] == '$':
                 # An escaped $ is handeled by the Execute() token, so
                 # we do not strip the \ here.
                 buffer += token
             else:
                 buffer += token[1]
             lexer.next()
         elif lexer.next_if('newline'):
             if buffer.strip() != '':
                 self.add(Execute(lexer, parser, self, buffer))
                 buffer = ''
         else:
             ttype = lexer.token()[0]
             lexer.syntax_error('Unexpected %s' % ttype, self)
     lexer.restore_grammar()
Exemple #4
0
 def __init__(self, lexer, parser, parent):
     Scope.__init__(self, 'Code', lexer, parser, parent)
     lexer.set_grammar(grammar_c)
     while True:
         lexer.skip(['whitespace', 'newline'])
         if lexer.next_if('close_curly_bracket'):
             if isinstance(parent, Template.Template):
                 break
             self.add(Template.Template(lexer, parser, self))
         elif lexer.current_is('keyword', 'append'):
             self.add(Append(lexer, parser, self))
         elif lexer.current_is('keyword', 'extract'):
             self.add(Extract(lexer, parser, self))
         elif lexer.current_is('keyword', 'fail'):
             self.add(Fail(lexer, parser, self))
         elif lexer.current_is('keyword', 'if'):
             self.add(IfCondition(lexer, parser, self))
         elif lexer.current_is('keyword', 'loop'):
             self.add(Loop(lexer, parser, self))
         elif lexer.current_is('varname'):
             self.add(Assign(lexer, parser, self))
         elif lexer.current_is('keyword', 'try'):
             self.add(Try(lexer, parser, self))
         elif lexer.current_is('keyword', 'enter'):
             self.add(Enter(lexer, parser, self))
         elif lexer.current_is('keyword', 'else'):
             if not isinstance(parent, Code):
                 lexer.syntax_error('"end" without a scope start', self)
             break
         elif lexer.next_if('keyword', 'end'):
             if not isinstance(parent, Code):
                 lexer.syntax_error('"end" without a scope start', self)
             lexer.skip(['whitespace', 'newline'])
             break
         elif lexer.current_is('open_function_call'):
             self.add(FunctionCall(lexer, parser, self))
         else:
             lexer.syntax_error('Unexpected %s "%s"' % lexer.token(), self)
     lexer.restore_grammar()
Exemple #5
0
 def __init__(self, lexer, parser, parent):
     Scope.__init__(self, 'Code', lexer, parser, parent)
     lexer.set_grammar(grammar_c)
     while True:
         lexer.skip(['whitespace', 'newline'])
         if lexer.next_if('close_curly_bracket'):
             if isinstance(parent, Template.Template):
                 break
             self.add(Template.Template(lexer, parser, self))
         elif lexer.current_is('keyword', 'append'):
             self.add(Append(lexer, parser, self))
         elif lexer.current_is('keyword', 'extract'):
             self.add(Extract(lexer, parser, self))
         elif lexer.current_is('keyword', 'fail'):
             self.add(Fail(lexer, parser, self))
         elif lexer.current_is('keyword', 'if'):
             self.add(IfCondition(lexer, parser, self))
         elif lexer.current_is('keyword', 'loop'):
             self.add(Loop(lexer, parser, self))
         elif lexer.current_is('varname'):
             self.add(Assign(lexer, parser, self))
         elif lexer.current_is('keyword', 'try'):
             self.add(Try(lexer, parser, self))
         elif lexer.current_is('keyword', 'enter'):
             self.add(Enter(lexer, parser, self))
         elif lexer.current_is('keyword', 'else'):
             if not isinstance(parent, Code):
                 lexer.syntax_error('"end" without a scope start', self)
             break
         elif lexer.next_if('keyword', 'end'):
             if not isinstance(parent, Code):
                 lexer.syntax_error('"end" without a scope start', self)
             lexer.skip(['whitespace', 'newline'])
             break
         elif lexer.current_is('open_function_call'):
             self.add(FunctionCall(lexer, parser, self))
         else:
             lexer.syntax_error('Unexpected %s "%s"' % lexer.token(), self)
     lexer.restore_grammar()
Exemple #6
0
 def __init__(self, lexer, parser, variables, **kwargs):
     Scope.__init__(self, 'Program', lexer, parser, None, **kwargs)
     self.variables      = variables
     self.init_variables = variables
     self.add(Template(lexer, parser, self))