public string ToCompareNumberExp(ITerminalNode property, ITerminalNode op, ITerminalNode number) { var propertyString = property.ToString(); if (SqlSchemaColumns.Contains(propertyString)) { var valueParam = CreateSqlParameter(number, SqlDbType.Int); return($"({property.ToString()} {op} @{valueParam})"); } else { queryContainsProperty = true; throw new NotImplementedException(); } }
protected ObjectDef EmitConstant(ITerminalNode constant) { ObjectDef returnObjectDef = null; if (int.TryParse(constant.ToString(), out _)) { returnObjectDef = EmitInteger(constant); } else if (double.TryParse(constant.ToString(), out _)) { returnObjectDef = EmitDouble(constant); } return(returnObjectDef); }
protected void EmitFunction( CParser.TypeSpecifierContext typeSpecifier, ITerminalNode identifier, CParser.ParameterTypeListContext parameters, CParser.CompoundStatementContext compoundStatement) { var functionName = identifier.ToString(); //CurrentArgs_ = Functions_[CurrentTypeBuilder_.Name][functionName].Args; _generatorIL = _functions[functionName].MethodBuilder.GetILGenerator(); LocalObjectDef.InitGenerator(_generatorIL); if (compoundStatement.blockItemList() != null) { var returnObjectDef = EmitCompoundStatement(compoundStatement); returnObjectDef.Load(); if (_functions[functionName].MethodBuilder.ReturnType == typeof(void)) { _generatorIL.Emit(OpCodes.Pop); } _generatorIL.Emit(OpCodes.Ret); returnObjectDef.Remove(); } else { _generatorIL.Emit(OpCodes.Ret); } }
public string ToCompareStringExp(ITerminalNode property, ITerminalNode op, ITerminalNode escapedString) { var propertyString = property.ToString(); var valueParam = CreateSqlParameter(escapedString); if (SqlSchemaColumns.Contains(propertyString)) { return($"({property.ToString()} {op} @{valueParam})"); } else { queryContainsProperty = true; throw new NotImplementedException(); // TODO: SqlParameter, Different Operators var propParam = CreateSqlParameter(property); return($"(X.exist('//*[@key=\"@{propParam}\" and contains(.,\"@{valueParam}\")]') = 1)"); } }
protected void DefineFunction( CParser.TypeSpecifierContext typeSpecifier, ITerminalNode identifier, CParser.ParameterTypeListContext parameters) { Type[] inputTypes = Type.EmptyTypes; var functionName = identifier.ToString(); var functionReturnType = typeSpecifier.RBAType(_moduleBuilder); var args = new Dictionary <string, MethodArgDef> { { "this", new MethodArgDef(_programClass, 0, "this") } }; if (parameters != null) { //var parametersStack //= new Stack<CParser.ExternalDeclarationContext>(); //parameters. //var functionListNode = treeNode.GetChild(3); //inputTypes = new Type[functionListNode.ChildCount]; //for (int k = 0; k < functionListNode.ChildCount; k++) //{ // inputTypes[k] = GetType(functionListNode.GetChild(k).GetChild(1).Text); // var argName = functionListNode.GetChild(k).GetChild(0).Text; // args.Add(argName, new ArgObjectDef(inputTypes[k], k + 1, argName)); //} } else { inputTypes = Type.EmptyTypes; } MethodBuilder methodBuilder; if (functionName == "main") { methodBuilder = _programClass.DefineMethod(functionName, MethodAttributes.Private | MethodAttributes.Static | MethodAttributes.HideBySig, typeof(void), Type.EmptyTypes); methodBuilder.SetCustomAttribute(new CustomAttributeBuilder( typeof(STAThreadAttribute).GetConstructor(Type.EmptyTypes), new object[] { })); _assemblyBuilder.SetEntryPoint(methodBuilder); _entryPoint = methodBuilder; } else { methodBuilder = _programClass.DefineMethod(functionName, MethodAttributes.Public | MethodAttributes.HideBySig, functionReturnType, inputTypes); } _functions.Add(functionName, new MethodDef(functionName, args, methodBuilder)); }
private int CreateSqlParameter(ITerminalNode item, SqlDbType type = SqlDbType.VarChar) { var propertyCounter = Command.Parameters.Count; var p = new SqlParameter($"@{propertyCounter}", type); if (type == SqlDbType.VarChar) { var trimmedString = item.ToString().Trim('"'); p.Value = trimmedString; p.Size = trimmedString.Length; } else { //Assert Int p.Value = int.Parse(item.ToString()); } Command.Parameters.Add(p); return(propertyCounter); }
public AntlrRawTreeTerminalNode(ITerminalNode terminalNode) { var symbol = terminalNode.Symbol; var recognizer = (IRecognizer)symbol?.TokenSource; if (recognizer == null) { DisplayName = terminalNode.ToString(); } else { DisplayName = symbol.Text; TypeName = recognizer.Vocabulary.GetSymbolicName(symbol.Type); } Children = null; }
public override void VisitTerminal(ITerminalNode node) { base.VisitTerminal(node); Console.WriteLine("term: " + node.ToString()); }
public void Visit(ITerminalNode node) { VisitLog.Add(node.ToString()); }