//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // PLEASE DO NOT EDIT WITHOUT THE EXPLICIT CONSENT OF THE AUTHOR! \\ //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ using Ilog.Language.Util; namespace Ilog.Language.Parsing { /** * This class is the type of tokens that are dynamic operators used by * the parser at parse time. * * @see OperatorSymbol * * @version Last modified on Sun May 29 10:07:50 2005 by hak * @author Hassan Aït-Kaci * @copyright © 2000 ILOG, S.A. */ public class Operator : Syntax.OperatorSymbol { /** * Constructs a parser operator for the specified dynamic parser, * with the specified name, nonterminal category, precedence, and * specifier. */ public Operator (DynamicParser parser, string name, NonTerminal category, int precedence, string specifier) // throws NonFatalParseErrorException : base(name,parser.operators,precedence,specifier) { this.category = category; string subcat = category.Name.ToUpper(); switch (fixity) { case PREFIX: subCategory = GenericParser.Terminal(subcat+"_"); break; case INFIX: subCategory = GenericParser.Terminal("_"+subcat+"_"); break; case POSTFIX: subCategory = GenericParser.Terminal("_"+subcat); break; } } /** * Constructs a parser operator for the specified dynamic parser, * with the specified name, nonterminal category, precedence, * associativity, and fixiy. */ public Operator (DynamicParser parser, string name, NonTerminal category, int precedence, int associativity, int fixity) : base(name,parser.operators,precedence,associativity,fixity) { this.category = category; string subcat = category.Name.ToUpper(); switch (fixity) { case PREFIX: subCategory = GenericParser.Terminal(subcat+"_"); break; case INFIX: subCategory = GenericParser.Terminal("_"+subcat+"_"); break; case POSTFIX: subCategory = GenericParser.Terminal("_"+subcat); break; } } // /** // * The dynamic parser using operator symbol. // */ // private DynamicParser parser; // internal DynamicParser Parser // { // get { return parser; } // } /** * This operator's nonterminal category. */ private NonTerminal category; internal NonTerminal Category { get { return category; } } /** * This operator's nonterminal category. */ private Terminal subCategory; internal Terminal SubCategory { get { return subCategory; } } /** * This operator symbol's nonterminal category name. */ public override string CategoryName { get { return category.Name; } } } }