public override CILClassField BuildNode(ParseTreeNode node) { var result = new CILClassField(); var idParseTreeNode = node.GetFirstChildWithGrammarName(GrammarNames.id); var fieldName = IdParseTreeNodeHelper.GetValue(idParseTreeNode); result.Name = fieldName; var typeParseTreeNode = node.GetFirstChildWithGrammarName(GrammarNames.type); var fieldType = TypeParseTreeNodeHelper.GetType(typeParseTreeNode); result.Type = fieldType; var fieldAttrParseTreeNode = node.GetFirstChildWithGrammarName(GrammarNames.fieldAttr); result.Attributes = FieldAttrParseTreeNodeHelper.GetAllAttributes(fieldAttrParseTreeNode); var initOptParseTreeNode = node.GetFirstChildWithGrammarName(GrammarNames.initOpt); var fieldInitParseTreeNode = initOptParseTreeNode.GetFirstChildWithGrammarName(GrammarNames.fieldInit); if (fieldInitParseTreeNode != null) { var int64ParseTreeNode = fieldInitParseTreeNode.GetFirstChildWithGrammarName(GrammarNames.int64); var fieldInitValue = Int64ParseTreeNodeHelper.GetValue(int64ParseTreeNode); result.InitValue = fieldInitValue; } return(result); }
public override CILInstructionI8 BuildNode(ParseTreeNode node) { var instrI8ParseTreeNode = node.GetFirstChildWithGrammarName(GrammarNames.INSTR_I8); CILInstructionI8 result = null; var ldci8ParseTreeNode = instrI8ParseTreeNode?.GetFirstChildWithGrammarName(GrammarNames.keyword_ldci8); if (ldci8ParseTreeNode != null) { result = new LoadConstantLongInstruction(); } if (result != null) { var int64ParseTreeNode = node.GetFirstChildWithGrammarName(GrammarNames.int64); result.Value = Int64ParseTreeNodeHelper.GetValue(int64ParseTreeNode); return(result); } throw new ArgumentException("Cannot recognize CIL instruction i8."); }