Ejemplo n.º 1
0
 private static Parser <SyntaxToken, JassTypeSyntax> GetReferenceTypeParser()
 {
     return(OneOf(
                Keyword(SyntaxTokenType.HandleKeyword).ThenReturn(JassTypeSyntax.Handle),
                IdentifierNameParser.Map(id => new JassTypeSyntax(id.Name)))
            .Labelled("reference type"));
 }
 private static Parser <SyntaxToken, IExpressionSyntax> GetArrayReferenceExpressionParser(Parser <SyntaxToken, IExpressionSyntax> expressionParser)
 {
     return(Try(IdentifierNameParser
                .Before(Token(SyntaxTokenType.SquareBracketOpenSymbol)))
            .Then(expressionParser, (id, indexer) => (IExpressionSyntax) new JassArrayReferenceExpressionSyntax(id, indexer))
            .Before(Token(SyntaxTokenType.SquareBracketCloseSymbol))
            .Labelled("array reference"));
 }
Ejemplo n.º 3
0
 private static Parser <char, IExpressionSyntax> GetArrayReferenceExpressionParser(Parser <char, IExpressionSyntax> expressionParser)
 {
     return(Try(IdentifierNameParser
                .Before(Char('[').SkipWhitespaces()))
            .Then(expressionParser, (id, indexer) => (IExpressionSyntax) new JassArrayReferenceExpressionSyntax(id, indexer))
            .Before(Char(']').SkipWhitespaces())
            .Labelled("array reference"));
 }
Ejemplo n.º 4
0
 private static Parser <char, JassFunctionDeclarationSyntax> GetFunctionDeclarationParser()
 {
     return(Map(
                (id, parameterList, returnType) => new JassFunctionDeclarationSyntax(id, parameterList, returnType),
                IdentifierNameParser.Before(Keyword("takes")),
                Keyword("nothing").ThenReturn(JassParameterListSyntax.Empty).Or(ParameterListParser),
                Keyword("returns").Then(Keyword("nothing", JassTypeSyntax.Nothing).Or(TypeParser)))
            .Labelled("function declaration"));
 }
Ejemplo n.º 5
0
 private static Parser <char, JassTypeSyntax> GetTypeParser()
 {
     return(OneOf(
                Keyword("code").ThenReturn(JassTypeSyntax.Code),
                Keyword("handle").ThenReturn(JassTypeSyntax.Handle),
                Keyword("integer").ThenReturn(JassTypeSyntax.Integer),
                Keyword("real").ThenReturn(JassTypeSyntax.Real),
                Keyword("boolean").ThenReturn(JassTypeSyntax.Boolean),
                Keyword("string").ThenReturn(JassTypeSyntax.String),
                IdentifierNameParser.Map(id => new JassTypeSyntax(id.Name)))
            .Labelled("type"));
 }
Ejemplo n.º 6
0
 private static Parser <SyntaxToken, JassTypeSyntax> GetTypeParser()
 {
     return(OneOf(
                Keyword(SyntaxTokenType.CodeKeyword).ThenReturn(JassTypeSyntax.Code),
                Keyword(SyntaxTokenType.HandleKeyword).ThenReturn(JassTypeSyntax.Handle),
                Keyword(SyntaxTokenType.IntegerKeyword).ThenReturn(JassTypeSyntax.Integer),
                Keyword(SyntaxTokenType.RealKeyword).ThenReturn(JassTypeSyntax.Real),
                Keyword(SyntaxTokenType.BooleanKeyword).ThenReturn(JassTypeSyntax.Boolean),
                Keyword(SyntaxTokenType.StringKeyword).ThenReturn(JassTypeSyntax.String),
                IdentifierNameParser.Map(id => new JassTypeSyntax(id.Name)))
            .Labelled("type"));
 }
 private static Parser <SyntaxToken, IExpressionSyntax> GetInvocationExpressionParser(Parser <SyntaxToken, IExpressionSyntax> expressionParser)
 {
     return(Try(IdentifierNameParser.Before(Token(SyntaxTokenType.ParenthesisOpenSymbol)))
            .Then(GetArgumentListParser(expressionParser).Before(Token(SyntaxTokenType.ParenthesisCloseSymbol)), (id, arguments) => (IExpressionSyntax) new JassInvocationExpressionSyntax(id, arguments))
            .Labelled("invocation expression"));
 }
 private static Parser <SyntaxToken, IExpressionSyntax> GetVariableReferenceExpressionParser()
 {
     return(IdentifierNameParser
            .Select <IExpressionSyntax>(name => new JassVariableReferenceExpressionSyntax(name))
            .Labelled("variable reference"));
 }
Ejemplo n.º 9
0
 private static Parser <char, IExpressionSyntax> GetInvocationExpressionParser(Parser <char, IExpressionSyntax> expressionParser)
 {
     return(Try(IdentifierNameParser.Before(Char('(').SkipWhitespaces()))
            .Then(GetArgumentListParser(expressionParser).Before(Char(')')), (id, arguments) => (IExpressionSyntax) new JassInvocationExpressionSyntax(id, arguments))
            .Labelled("invocation expression"));
 }