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); }
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); }