LeafStringLiteralParser.java

package edu.udel.cis.vsl.tass.ast.parser;

import edu.udel.cis.vsl.tass.ast.IF.expression.StringLiteralNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.type.TypeNodeIF;

import edu.udel.cis.vsl.tass.ast.impl.expression.StringLiteralNode;
import edu.udel.cis.vsl.tass.ast.impl.type.CharacterTypeNode;
import edu.udel.cis.vsl.tass.ast.impl.type.ArrayTypeNode;

class LeafStringLiteralParser extends LeafParser {

    public LeafStringLiteralParser(NodeTypes nodeTypes, RefMappers refMappers) {
        super(nodeTypes,refMappers);
    }

    @Override
    public NodeParserIF makeInstance() {
        return new LeafStringLiteralParser(nodeTypes, refMappers);
    }

    @Override
    public StringLiteralEltWrapper node() {
        TypeNodeIF charType =
            new CharacterTypeNode(refMappers.getId());
        TypeNodeIF stringType =
            new ArrayTypeNode(refMappers.getId(),charType);
        StringLiteralNode retVal =
            new StringLiteralNode(refMappers.getId(),null,stringType,charData);
        return new StringLiteralEltWrapper(retVal);
    }

}