예제 #1
0
        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));
        }
예제 #2
0
 public static ArrayTypeNode CharType()
 {
     return(MakeType(NamedTypeNode.CharType()));
 }