private void DeclareTokens(PrecType prop, string kind, List <TokenInfo> list) { grammar.BumpPrec(); foreach (TokenInfo info in list) { Token token = (IsLitChar(info.name) ? Token.litchar : Token.ident); Terminal t = grammar.LookupOrDefineTerminal(token, info.name, info.alias); if (prop != PrecType.token) { t.prec = new Precedence(prop, grammar.Prec); } if (!String.IsNullOrEmpty(kind)) { t.kind = kind; } } }
private void DeclareTokens(LexSpan span1, PrecType prop, string kind, List <TokenInfo> list) { grammar.BumpPrec(); if (GPCG.ImportedTokens) { handler.ListError(span1, 81); } foreach (TokenInfo info in list) { Token token = (IsLitChar(info.name) ? Token.litchar : Token.ident); Terminal t = grammar.LookupOrDefineTerminal(token, info.name, info.alias, span1); if (prop != PrecType.token) { t.prec = new Precedence(prop, grammar.Prec); } if (!String.IsNullOrEmpty(kind)) { t.kind = kind; } } }
internal Precedence(PrecType type, int prec) { this.type = type; this.prec = prec; }
public static int Check(Precedence p,PrecType t,int d) { if (p==null) return 0; if (p.m_type==t) return p.m_prec; return Check(p.m_next,t,d+1); }
static int CheckType(Precedence p,PrecType t, int d) { if (p==null) return 0; if (p.m_type==t || (p.m_type<=PrecType.nonassoc && t<=PrecType.nonassoc)) return p.m_prec; return Check(p.m_next,t, d+1); }
public Precedence(PrecType t,int p,Precedence next) { if (CheckType(next,t,0)!=0) Console.WriteLine("redeclaration of precedence"); m_next = next; m_type = t; m_prec = p; }
public Precedence(PrecType type, int prec) { this.type = type; this.prec = prec; }