コード例 #1
0
ファイル: grammar.py プロジェクト: weisserw/itte
def rune_lit():        return _, [r(r"r'(\\[^\n]|[^\\\"\n])*'"), r('r"(\\[^\n]|[^\\\'\n])*"')]
def string_lit():      return _, [single_string, double_string, raw_string]
コード例 #2
0
ファイル: grammar.py プロジェクト: weisserw/itte
def GotoStmt():        return _, r(r'\bgoto\b'), ident
def FallStmt():        return _, r(r'\bfallthrough\b')
コード例 #3
0
ファイル: grammar.py プロジェクト: weisserw/itte
def IfStmt():          return _, r(r'\bif\b'), Optional(SimpleStmt, _, ';'), Expression, Block, ZeroOrMore(_, r(r'\belse\b'), _, r(r'\bif\b'), Expression, Block), Optional(_, r(r'\belse\b'), Block)
def SwitchStmt():      return _, r(r'\bswitch\b'), Optional(SimpleStmt, _, ';'), [ExprSwitchStmt, TypeSwitchStmt]
コード例 #4
0
ファイル: grammar.py プロジェクト: weisserw/itte
def GoStmt():          return _, r(r'\bgo\b'), Expression
def ReturnStmt():      return _, r(r'\breturn\b'), Optional(ExpressionList)
コード例 #5
0
ファイル: grammar.py プロジェクト: weisserw/itte
def BreakStmt():       return _, r(r'\bbreak\b'), Optional(ident)
def ContinueStmt():    return _, r(r'\bcontinue\b'), Optional(ident)
コード例 #6
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ChannelType():     return _, r('<-?'), Type, _, r('-?>')
def FunctionLit():     return _, r(r'\bfunc\b'), Function
コード例 #7
0
ファイル: grammar.py プロジェクト: weisserw/itte
def TypeAssertion():   return _, r(r'\bas\b'), Type

# statements
def Block():           return _, '{', Optional(StatementList), _, '}'
コード例 #8
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ImportDecl():      return _, r(r'\bimport\b'), ImportSpec, ZeroOrMore(_, ',', ImportSpec), Optional(_, ',')
def ImportSpec():      return _, r(import_re), Optional(_, r(r'\bas\b'), ident)
コード例 #9
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ImportSpec():      return _, r(import_re), Optional(_, r(r'\bas\b'), ident)
def TopLevelDecls():   return TopLevelDecl, ZeroOrMore(nl, TopLevelDecl), Optional(nl)
コード例 #10
0
ファイル: grammar.py プロジェクト: weisserw/itte
def NotKeyword():     return _, Not(r(r'\b(as|break|case|const|continue|default|defer|else|fallthrough|for|while|func|go|goto|if|import|interface|return|select|struct|switch|type|var)\b'))
def nl():              return r(r'[ \t\r]*[\n;]')
コード例 #11
0
ファイル: grammar.py プロジェクト: weisserw/itte
def nl():              return r(r'[ \t\r]*[\n;]')
def _():               return r(r'[ \t\r\n]*')
コード例 #12
0
ファイル: grammar.py プロジェクト: weisserw/itte
def raw_string():      return r("`[^`]*`")
def ident():           return NotKeyword, r(id_re)
コード例 #13
0
ファイル: grammar.py プロジェクト: weisserw/itte
def double_string():   return r(r'\$?"(\\[^\n]|[^\\\'\n])*"')
def raw_string():      return r("`[^`]*`")
コード例 #14
0
ファイル: grammar.py プロジェクト: weisserw/itte
def single_string():   return r(r"\$?'(\\[^\n]|[^\\\"\n])*'")
def double_string():   return r(r'\$?"(\\[^\n]|[^\\\'\n])*"')
コード例 #15
0
ファイル: grammar.py プロジェクト: weisserw/itte
def FunctionType():    return _, r(r'\bfunc\b'), Signature
def Signature():       return _, '(', ParameterList, _, ')', Optional(Result)
コード例 #16
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ConstDecl():       return _, r(r'\bconst\b'), IdentifierList, _, '=', ExpressionList
def IdentifierList():  return ident, ZeroOrMore(_, ',', ident), Optional(_, ',')
コード例 #17
0
ファイル: grammar.py プロジェクト: weisserw/itte
def InterfaceType():   return _, r(r'\binterface\b'), InterfaceBody
def InterfaceBody():   return _, '{', Optional(MethodSpec, ZeroOrMore(nl, MethodSpec), Optional(nl)), _, '}'
コード例 #18
0
ファイル: grammar.py プロジェクト: weisserw/itte
def TypeDecl():        return _, r(r'\btype\b'), TypeSpec, ZeroOrMore(_, ',', TypeSpec), Optional(_, ',')
def TypeSpec():        return Type, ident
コード例 #19
0
ファイル: grammar.py プロジェクト: weisserw/itte
def FunctionLit():     return _, r(r'\bfunc\b'), Function
def Function():        return _, Signature, Block
コード例 #20
0
ファイル: grammar.py プロジェクト: weisserw/itte
def FunctionDecl():    return _, r(r'\bfunc\b'), ident, [Function, Signature]
def MethodDecl():      return _, r(r'\bfunc\b'), Receiver, ident, [Function, Signature]
コード例 #21
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ShortVarDecl():    return _, r(r'\bvar\b'), IdentifierList, _, '=', ExpressionList   
def GoStmt():          return _, r(r'\bgo\b'), Expression
コード例 #22
0
ファイル: grammar.py プロジェクト: weisserw/itte
def MethodDecl():      return _, r(r'\bfunc\b'), Receiver, ident, [Function, Signature]
def Receiver():        return _, '(', Type, Optional(ident), _, ')'
コード例 #23
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ReturnStmt():      return _, r(r'\breturn\b'), Optional(ExpressionList)
def BreakStmt():       return _, r(r'\bbreak\b'), Optional(ident)
コード例 #24
0
ファイル: grammar.py プロジェクト: weisserw/itte
def StructDecl():      return _, r(r'\bstruct\b'), ident, StructBody
def InterfaceDecl():   return _, r(r'\binterface\b'), ident, InterfaceBody
コード例 #25
0
ファイル: grammar.py プロジェクト: weisserw/itte
def ContinueStmt():    return _, r(r'\bcontinue\b'), Optional(ident)
def GotoStmt():        return _, r(r'\bgoto\b'), ident
コード例 #26
0
ファイル: grammar.py プロジェクト: weisserw/itte
def InterfaceDecl():   return _, r(r'\binterface\b'), ident, InterfaceBody

# expressions
def Expression():      return Optional(unary_op), SubExpr, ZeroOrMore(TailExpr)
コード例 #27
0
ファイル: grammar.py プロジェクト: weisserw/itte
def FallStmt():        return _, r(r'\bfallthrough\b')
def IfStmt():          return _, r(r'\bif\b'), Optional(SimpleStmt, _, ';'), Expression, Block, ZeroOrMore(_, r(r'\belse\b'), _, r(r'\bif\b'), Expression, Block), Optional(_, r(r'\belse\b'), Block)
コード例 #28
0
ファイル: grammar.py プロジェクト: weisserw/itte
def StructType():      return _, r(r'\bstruct\b'), StructBody
def StructBody():      return _, '{', Optional(FieldDecl, ZeroOrMore(nl, FieldDecl), Optional(nl)), _, '}'
コード例 #29
0
ファイル: grammar.py プロジェクト: weisserw/itte
def SwitchStmt():      return _, r(r'\bswitch\b'), Optional(SimpleStmt, _, ';'), [ExprSwitchStmt, TypeSwitchStmt]
def ExprSwitchStmt():  return Optional(Expression), _, '{', ZeroOrMore(ExprCaseClause), _, '}'
コード例 #30
0
ファイル: grammar.py プロジェクト: weisserw/itte
def imaginary_lit():   return _, [float_lit, r('[0-9]+')], 'i'
def rune_lit():        return _, [r(r"r'(\\[^\n]|[^\\\"\n])*'"), r('r"(\\[^\n]|[^\\\'\n])*"')]