static TexPredefinedFormulaParser() { typeMappings = new Dictionary <string, Type>(); argValueParsers = new Dictionary <string, ArgumentValueParser>(); actionParsers = new Dictionary <string, ActionParser>(); formulaParser = new TexFormulaParser(); typeMappings.Add("Formula", typeof(TexFormula)); typeMappings.Add("string", typeof(string)); typeMappings.Add("double", typeof(double)); typeMappings.Add("int", typeof(int)); typeMappings.Add("bool", typeof(bool)); typeMappings.Add("char", typeof(char)); typeMappings.Add("Color", typeof(Color)); typeMappings.Add("Unit", typeof(TexUnit)); typeMappings.Add("AtomType", typeof(TexAtomType)); actionParsers.Add("CreateFormula", new CreateTeXFormulaParser()); actionParsers.Add("MethodInvocation", new MethodInvocationParser()); actionParsers.Add("Return", new ReturnParser()); argValueParsers.Add("TeXFormula", new TeXFormulaValueParser()); argValueParsers.Add("string", new StringValueParser()); argValueParsers.Add("double", new DoubleValueParser()); argValueParsers.Add("int", new IntValueParser()); argValueParsers.Add("bool", new BooleanValueParser()); argValueParsers.Add("char", new CharValueParser()); argValueParsers.Add("Color", new ColorConstantValueParser()); argValueParsers.Add("Unit", new EnumParser(typeof(TexUnit))); argValueParsers.Add("AtomType", new EnumParser(typeof(TexAtomType))); }
public override void Parse(XElement element) { var name = element.AttributeValue("name"); var args = element.Elements("Argument"); var argTypes = GetArgumentTypes(args); var argValues = GetArgumentValues(TempFormulas, args); Debug.Assert(argValues.Length == 1); var parser = new TexFormulaParser(); var formula = parser.Parse((string)argValues[0]); TempFormulas.Add(name, formula); }