/*
* ******************************************************************************
* MontiCore Language Workbench
* Copyright (c) 2015, MontiCore, All rights reserved.
*
* This project is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this project. If not, see <http://www.gnu.org/licenses/>.
* ******************************************************************************
*/
package de.monticore.literals.prettyprint;
import de.monticore.literals.literals._ast.ASTBooleanLiteral;
import de.monticore.literals.literals._ast.ASTCharLiteral;
import de.monticore.literals.literals._ast.ASTDoubleLiteral;
import de.monticore.literals.literals._ast.ASTFloatLiteral;
import de.monticore.literals.literals._ast.ASTIntLiteral;
import de.monticore.literals.literals._ast.ASTLiteralsNode;
import de.monticore.literals.literals._ast.ASTLongLiteral;
import de.monticore.literals.literals._ast.ASTNullLiteral;
import de.monticore.literals.literals._ast.ASTSignedDoubleLiteral;
import de.monticore.literals.literals._ast.ASTSignedFloatLiteral;
import de.monticore.literals.literals._ast.ASTSignedIntLiteral;
import de.monticore.literals.literals._ast.ASTSignedLongLiteral;
import de.monticore.literals.literals._ast.ASTStringLiteral;
import de.monticore.literals.literals._visitor.LiteralsVisitor;
import de.monticore.prettyprint.IndentPrinter;
public class LiteralsPrettyPrinterConcreteVisitor implements LiteralsVisitor {
private LiteralsVisitor realThis = this;
// printer to use
protected IndentPrinter printer = null;
/**
* Constructor for de.monticore.literals.prettyprint.LiteralsPrettyPrinterConcreteVisitor.
* @param printer
*/
public LiteralsPrettyPrinterConcreteVisitor(IndentPrinter printer) {
super();
this.printer = printer;
}
/**
* @return the printer
*/
public IndentPrinter getPrinter() {
return this.printer;
}
/**
* Prints a "null" literal
*
* @param a null literal
*/
@Override
public void visit(ASTNullLiteral a) {
printer.print("null");
}
/**
* Prints a boolean literal
*
* @param a boolean literal
*/
@Override
public void visit(ASTBooleanLiteral a) {
printer.print(a.getValue());
}
/**
* Prints a char literal
*
* @param a char literal
*/
@Override
public void visit(ASTCharLiteral a) {
printer.print("'" + a.getSource() + "'");
}
/**
* Prints a string literal
*
* @param a string literal
*/
@Override
public void visit(ASTStringLiteral a) {
printer.print("\"" + a.getSource() + "\"");
}
/**
* Prints a int literal
*
* @param a int literal
*/
@Override
public void visit(ASTIntLiteral a) {
printer.print(a.getSource());
}
/**
* Prints a long literal
*
* @param a long literal
*/
@Override
public void visit(ASTLongLiteral a) {
printer.print(a.getSource());
}
/**
* Prints a float literal
*
* @param a float literal
*/
@Override
public void visit(ASTFloatLiteral a) {
printer.print(a.getSource());
}
/**
* Prints a double literal
*
* @param a double literal
*/
@Override
public void visit(ASTDoubleLiteral a) {
printer.print(a.getSource());
}
/**
* Prints a signed double literal.
*
* @param ast a signed double literal
*/
@Override
public void visit(ASTSignedDoubleLiteral ast) {
printer.print(ast.getSource());
}
/**
* Prints a signed float literal.
*
* @param ast a signed float literal
*/
@Override
public void visit(ASTSignedFloatLiteral ast) {
printer.print(ast.getSource());
}
/**
* Prints a signed int literal.
*
* @param ast a signed int literal
*/
@Override
public void visit(ASTSignedIntLiteral ast) {
printer.print(ast.getSource());
}
/**
* Prints a signed long literal.
*
* @param ast a signed long literal
*/
@Override
public void visit(ASTSignedLongLiteral ast) {
printer.print(ast.getSource());
}
/**
* This method prettyprints a given node from literal grammar.
*
* @param a A node from literal grammar.
* @return String representation.
*/
public String prettyprint(ASTLiteralsNode a) {
a.accept(getRealThis());
return printer.getContent();
}
/**
* @see de.monticore.literals.literals._visitor.LiteralsVisitor#setRealThis(de.monticore.literals.literals._visitor.LiteralsVisitor)
*/
@Override
public void setRealThis(LiteralsVisitor realThis) {
this.realThis = realThis;
}
/**
* @see de.monticore.literals.literals._visitor.LiteralsVisitor#getRealThis()
*/
@Override
public LiteralsVisitor getRealThis() {
return realThis;
}
}