public static ConstNode GetConstNode <TSymbol>(IParseTree <TSymbol> parseTree) where TSymbol : ISymbol <TSymbol> { // one of: DecimalNumberLiteral | CharacterLiteral | StringLiteral | BooleanLiteral TypeNode type; switch (ASTBuilder.GetName(parseTree.Symbol)) { case "DecimalNumberLiteral": type = NamedTypeNode.IntType(true); break; case "CharacterLiteral": type = NamedTypeNode.CharType(true); break; case "StringLiteral": throw new NotImplementedException(); // TODO: strings implementation case "BooleanLiteral": type = NamedTypeNode.BoolType(true); break; default: throw new System.ArgumentException(); } return(new AtomNode(type)); }
public static ArrayTypeNode CharType() { return(MakeType(NamedTypeNode.CharType())); }