001 package org.objectweb.jac.core.parsers.acc; 002 003 /** 004 * Base class for Terminal and NonTerminal. 005 */ 006 public class SyntaxElement { 007 /** Element's name */ 008 String name; 009 /** Left position of element in stream */ 010 int left; 011 /** Right position of element in stream */ 012 int right; 013 014 SyntaxElement parent; 015 016 public SyntaxElement(String name, int left, int right) { 017 this.name = name; 018 this.left = left; 019 this.right = right; 020 } 021 public String getName() { 022 return name; 023 } 024 public int getLeft() { 025 return left; 026 } 027 public int getRight() { 028 return right; 029 } 030 public void setParent(SyntaxElement parent) { 031 this.parent = parent; 032 } 033 034 public SyntaxElement getParent() { 035 return parent; 036 } 037 038 /** 039 * Find a parent element of this element with a given name 040 * @param searchedName the name to find 041 * @return a SyntaxElement who is a parent of this (or this) 042 */ 043 public SyntaxElement findParent(String searchedName) { 044 if (name.equals(searchedName)) 045 return this; 046 else if (parent==null) 047 return null; 048 else 049 return parent.findParent(searchedName); 050 } 051 052 public String toString() { 053 return name+":"+left+"-"+right; 054 } 055 }