//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // PLEASE DO NOT EDIT WITHOUT THE EXPLICIT CONSENT OF THE AUTHOR! \\ //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ using Ilog.Language.Util; using Ilog.Language.Tools; namespace Ilog.Language.Syntax { /** * This is the class of terminal symbols used by the grammar * at parser construction time. * * @see GrammarSymbol * * @version Last modified on Mon May 23 15:00:58 2005 by hak * @author Hassan Aït-Kaci * @copyright © 2000 ILOG, S.A. */ internal class Terminal : GrammarSymbol, Taggable { /** * Construct a terminal symbol with the specified name. */ internal Terminal (string name) : base(name,grammar.Terminals,grammar.TCount++) { } internal Terminal (string name, bool isOperator) : base(name,grammar.Terminals,grammar.TCount++) { this.isOperator = isOperator; } /** * This symbol's precedence. */ private int precedence = Grammar.MIN_PRECEDENCE; public int Precedence { get { return precedence; } set { precedence = value; } } /** * This symbol's associativity. */ private int associativity = Grammar.NON_ASSOCIATIVE; public int Associativity { get { return associativity; } set { associativity = value; } } /** * An indicator that this is used as a rule tag */ private bool isTag = false; internal new bool IsTag { get { return isTag; } set { isTag = value; } } /** * An HTML-coded label for this symbol (used when generating a grammar * documentation) */ internal override string Label { get { return ""+Misc.HtmlString(name)+""; } } /** * Establishes a link between this symbol and the specified rule. */ internal override void Link (Rule rule) { // Documentor.HasError = IsError; if (ruleOccurrences == null) ruleOccurrences = new SetOf(grammar.Rules); ruleOccurrences.Add(rule); } /** * A coded reference name for this symbol (used when generating * a grammar documentation). */ internal override string RefName { get { if (refName == null) refName = Options.GrammarPrefix + "_TT_"+Misc.ZeroPaddedString(Index, Misc.NumWidth(grammar.TCount)); return refName; } } /** * Returns this terminal symbol's single-quote name. */ public override string ToString () { return '\''+name+'\''; } } }