Example #1
0
        private RouteInherit Visit(InheritAST inheritAST)
        {
            RouteInherit routeInherit = new RouteInherit();

            routeInherit.Name = Visit(inheritAST.Name);
            routeInherit.Type = Visit(inheritAST.Type);
            if (!(currentScope.Lookup(routeInherit.Type) is TypeSymbol typeSymbol && typeSymbol.Type.Name == "SIGN"))
            {
                throw logger.Error(new SemanticException(inheritAST.Type.FindToken(), $"{routeInherit.Type} is not a valid signature"));
            }
            return(routeInherit);
        }
Example #2
0
        private AST Inherit()
        {
            StringToken nameToken     = Eat(TokenType.ID) as StringToken;
            AST         definitionAST = new WordAST(nameToken);

            if (currentToken.Type == TokenType.COLON)
            {
                Eat(TokenType.COLON);
                StringToken typeToken = Eat(TokenType.ID) as StringToken;
                WordAST     typeAST   = new WordAST(typeToken);
                definitionAST = new InheritAST(definitionAST as WordAST, typeAST);
            }
            return(definitionAST);
        }