Ejemplo n.º 1
0
        private SignatureAST Signature()
        {
            Eat(TokenType.SIGN);
            StringToken typeNameToken = Eat(TokenType.ID) as StringToken;
            WordAST     typeName      = new WordAST(typeNameToken);

            Eat(TokenType.LPAR);
            RoutePortAST inPortAST;

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

            if (currentToken.Type != TokenType.RPAR)
            {
                outPortAST = RoutePorts();
            }
            else
            {
                outPortAST = new RoutePortAST(new List <WordAST>());
            }
            Eat(TokenType.RPAR);
            Eat(TokenType.SEMIC);
            return(new SignatureAST(typeName, inPortAST, outPortAST));
        }
Ejemplo n.º 2
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));
        }
Ejemplo n.º 3
0
 private List <string> Visit(RoutePortAST routePortAST)
 {
     return(routePortAST.Ports.ConvertAll(routePort => (Visit(routePort))));
 }