private void WrapParameterInParentheses(ASTNodeList newNodes, IASTNode parameter) { IASTNode newNode = NodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false); Translator.TranslateSubNodes(newNode.SubNodes, parameter); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); newNodes.Add(newNode); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // MOD(3, 5) => (3) % (5) Translator = translator; NodeFactory = nodeFactory; WrapParameterInParentheses(newNodes, subNodes[1]); newNodes.Add(nodeFactory.CreateNode("%")); WrapParameterInParentheses(newNodes, subNodes[3]); }
public ASTNodeList ParseExpression(ATokens tokens) { ASTNodeList nodes = new ASTNodeList(); while (tokens.CurrentToken != null) { IASTNode node = NodeFactory.CreateNode(tokens.CurrentToken.Text, tokens.CurrentToken.AddSpace); node.Parse(NodeFactory, this, tokens); nodes.Add(node); } return(nodes); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { IASTNode newNode = nodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false); newNode.SubNodes.Add(nodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(nodeFactory.CreateNode("+")); newNode.SubNodes.Add(nodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(nodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); newNodes.Add(newNode); translator.TranslateSubNodes(newNode.SubNodes[0].SubNodes, subNodes[1]); translator.TranslateSubNodes(newNode.SubNodes[2].SubNodes, subNodes[3]); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { // TO_FLOAT('123') => convert(dec(28,8) , '123') Translator = translator; NodeFactory = nodeFactory; IASTNode newNode = NodeFactory.CreateNode("convert", false); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTStartParenthesesNode.KeyWord, false)); newNode.SubNodes.Add(NodeFactory.CreateFunctionParameterNode()); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTCommaNode.KeyWord)); newNode.SubNodes.Add(CreateFunctionParameterNodeWithSubNodes(subNodes[1])); newNode.SubNodes.Add(NodeFactory.CreateNode(ASTEndParenthesesNode.KeyWord)); AddFunction(newNode.SubNodes[1].SubNodes, "dec", CreateFunctionParameterNode("28"), CreateFunctionParameterNode("8")); newNodes.Add(newNode); }
public override void Translate(IATranslator translator, ASTNodeList newNodes, ASTNodeList subNodes, IASTNodeFactory nodeFactory) { newNodes.Add(nodeFactory.CreateNode("sysdate")); }