internal override void CalcSort(Func<FastToken, FastSort> context, FastPgm program) { if (program.defsMap.ContainsKey(this._token.text)) _sort = program.GetConstantSort(this._token); else _sort = context(this._token); }
internal override void Typecheck(FastPgm pgm) { if (this.expr != null) //else constructor { Func<FastToken, FastSort> context = x => { if (varSortMap.ContainsKey(x.text)) return varSortMap[x.text]; else return pgm.GetConstantSort(x); }; this.expr.CalcSort(context, pgm); if (!this.outputSort.name.text.Equals(this.expr.sort.name.text)) throw new FastParseException(this.expr.token.Location, string.Format("Wrong sort '{0}', expecting '{1}'", expr.sort.name, outputSort.name.text)); } }