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)
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)
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()
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()
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))