Exemplo n.º 1
0
        private RouteAST Route()
        {
            Eat(TokenType.ROUTE);
            AST definition = Inherit();

            Eat(TokenType.LPAR);
            RouteParamsAST routeParamsAST;

            if (currentToken.Type != TokenType.SEMIC)
            {
                routeParamsAST = RouteParameters();
            }
            else
            {
                routeParamsAST = new RouteParamsAST(new List <RouteParamAST>());
            }
            Eat(TokenType.SEMIC);
            RouteInPortAST inPortAST;

            if (currentToken.Type != TokenType.SEMIC)
            {
                inPortAST = RouteInPorts();
            }
            else
            {
                inPortAST = new RouteInPortAST(new List <AST>());
            }
            Eat(TokenType.SEMIC);
            RoutePortAST outPortAST;

            if (currentToken.Type != TokenType.RPAR)
            {
                outPortAST = RoutePorts();
            }
            else
            {
                outPortAST = new RoutePortAST(new List <WordAST>());
            }
            Eat(TokenType.RPAR);
            StatementsAST statementsAST = Statements();

            Eat(TokenType.END);
            return(new RouteAST(definition, routeParamsAST, inPortAST, outPortAST, statementsAST));
        }
Exemplo n.º 2
0
 private List <RouteParam> Visit(RouteParamsAST routeParamsAST)
 {
     return(routeParamsAST.Parameters.ConvertAll(routeParam => Visit(routeParam)));
 }