예제 #1
0
파일: Extension.cs 프로젝트: mpmedia/Excess
        private static SyntaxNode Identifier(RParser.IdentifierContext identifier, Func<ParserRuleContext, Scope, SyntaxNode> transform, Scope scope)
        {
            var str = identifier
                .ID()
                .ToString()
                .Replace('.', '_');

            return CSharp.ParseExpression(str);
        }
예제 #2
0
파일: Extension.cs 프로젝트: mpmedia/Excess
        private static SyntaxNode ForEachStatement(RParser.ForEachStatementContext forStatement, Func<ParserRuleContext, Scope, SyntaxNode> transform, Scope scope)
        {
            if (!topLevel(forStatement))
                throw new NotImplementedException();

            var exprs = forStatement.expr();
            var array = (ExpressionSyntax)transform(exprs[0], scope);
            var body = parseBlock(exprs[1], transform, scope);

            return @foreach.Get<ForEachStatementSyntax>(forStatement.ID().ToString(), array)
                .WithStatement(body);
        }