/******************************************************************************* * Copyright (c) 2009 University of Edinburgh. * All rights reserved. This program and the accompanying materials are made * available under the terms of the BSD Licence, which accompanies this feature * and can be downloaded from http://groups.inf.ed.ac.uk/pepa/update/licence.txt ******************************************************************************/ package uk.ac.ed.inf.biopepa.core.dom.internal; import java_cup.runtime.Symbol; import java_cup.runtime.SymbolFactory; import uk.ac.ed.inf.biopepa.core.dom.ASTNode; /** * @author Mirco * */ public class BioPEPASymbolFactory implements SymbolFactory { public Symbol newLocationAwareSymbol(String name, int id, Object value, int startPosition, int endPosition, int line, int column) { BioPEPASymbol symbol = new BioPEPASymbol(id, value); symbol.left = startPosition; symbol.right = endPosition; symbol.line = line; symbol.column = column; return symbol; } /* * (non-Javadoc) * * @see java_cup.runtime.SymbolFactory#newSymbol(java.lang.String, int) */ public Symbol newSymbol(String name, int id) { return newSymbol(name, id, null, null, null); } /* * (non-Javadoc) * * @see java_cup.runtime.SymbolFactory#newSymbol(java.lang.String, int, * java.lang.Object) */ public Symbol newSymbol(String name, int id, Object value) { return newSymbol(name, id, null, null, value); } /* * (non-Javadoc) * * @see java_cup.runtime.SymbolFactory#newSymbol(java.lang.String, int, * java_cup.runtime.Symbol, java_cup.runtime.Symbol) */ public Symbol newSymbol(String name, int id, Symbol left, Symbol right) { return newSymbol(name, id, left, right, null); } /* * (non-Javadoc) * * @see java_cup.runtime.SymbolFactory#newSymbol(java.lang.String, int, * java_cup.runtime.Symbol, java_cup.runtime.Symbol, java.lang.Object) */ public Symbol newSymbol(String name, int id, Symbol left, Symbol right, Object value) { BioPEPASymbol symbol = new BioPEPASymbol(id); symbol.value = value; if (left != null) { symbol.left = left.left; symbol.line = ((BioPEPASymbol) left).line; } if (right != null) symbol.right = right.right; if (value != null && value instanceof ASTNode) { ASTNode node = (ASTNode) value; node.setSourceRange(left.left, right.right - left.left, ((BioPEPASymbol) left).line, ((BioPEPASymbol) left).column); } return symbol; } /* * (non-Javadoc) * * @see java_cup.runtime.SymbolFactory#startSymbol(java.lang.String, int, * int) */ public Symbol startSymbol(String name, int id, int state) { BioPEPASymbol symbol = new BioPEPASymbol(id); symbol.parse_state = state; symbol.left = 0; symbol.right = 0; symbol.value = null; return symbol; } }