Repository: vxquery Updated Branches: refs/heads/master dac53abcf -> 80efee30c
Still working on JsonParser Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/2410db88 Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/2410db88 Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/2410db88 Branch: refs/heads/master Commit: 2410db882eae4d281f375bab0d3b87a6f2813709 Parents: ed79cb0 Author: Christina Pavlopoulou <[email protected]> Authored: Wed May 25 14:20:20 2016 -0700 Committer: Christina Pavlopoulou <[email protected]> Committed: Wed May 25 14:20:20 2016 -0700 ---------------------------------------------------------------------- .../org/apache/vxquery/xmlquery/ast/ASTTag.java | 92 +++++++++++++++++++- .../xmlquery/ast/ArrayConstructorNode.java | 27 ++++++ vxquery-core/src/main/javacc/xquery-grammar.jj | 42 +++++++++ 3 files changed, 160 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/2410db88/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ASTTag.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ASTTag.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ASTTag.java index 65acb21..cd3f223 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ASTTag.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ASTTag.java @@ -17,6 +17,96 @@ package org.apache.vxquery.xmlquery.ast; public enum ASTTag { - VERSION_DECL, PROLOG, LIBRARY_MODULE, MODULE_DECLARATION, MAIN_MODULE, QUERY_BODY, BOUNDARY_SPACE_DECLARATION, DEFAULT_ELEMENT_NAMESPACE_DECLARATION, DEFAULT_FUNCTION_NAMESPACE_DECLARATION, OPTION_DECLARATION, FT_OPTION_DECLARATION, ORDERING_MODE_DECLARATION, EMPTY_ORDER_DECLARATION, COPY_NAMESPACES_DECLARATION, DEFAULT_COLLATION_DECLARATION, BASE_URI_DECLARATION, SCHEMA_IMPORT, MODULE_IMPORT, VARIABLE_DECLARATION, TYPE_DECLARATION, SEQUENCE_TYPE, ITEM_TYPE, ATOMIC_TYPE, ANY_NODE_TEST, ITEM_TEST, DOCUMENT_TEST, QNAME, ELEMENT_TEST, SCHEMA_ELEMENT_TEST, ATTRIBUTE_TEST, SCHEMA_ATTRIBUTE_TEST, TEXT_TEST, COMMENT_TEST, PI_TEST, TYPE_NAME, CONSTRUCTION_DECLARATION, FUNCTION_DECLARATION, FUNCTION_PARAMETER, ENCLOSED_EXPRESSION, EXPRESSION, FLWOR_EXPRESSION, FOR_CLAUSE, FOR_VARIABLE_DECLARATION, LET_VARIABLE_DECLARATION, LET_CLAUSE, WHERE_CLAUSE, ORDERBY_CLAUSE, ORDER_SPECIFICATION, QUANTIFIED_EXPRESSION, QUANTIFIED_VARIABLE_DECLARATION, TYPESWITCH_EXPRESSION, CASE_CLAUSE, IF_EXPRESSIO N, INFIX_EXPRESSION, TYPE_EXPRESSION, UNARY_EXPRESSION, VALIDATE_EXPRESSION, EXTENSION_EXPRESSION, PRAGMA_NODE, PATH_EXPRESSION, AXIS_STEP, NAME_TEST, FILTER_EXPRESSION, LITERAL, VARIABLE_REFERENCE, PARENTHESIZED_EXPRESSION, CONTEXT_ITEM, ORDERED_EXPRESSION, UNORDERED_EXPRESSION, FUNCTION_EXPRESSION, DIRECT_ELEMENT_CONSTRUCTOR, DIRECT_ATTRIBUTE_CONSTRUCTOR, DQUOTED_ATTRIBUTE_CONTENT, SQUOTED_ATTRIBUTE_CONTENT, TEXTUAL_NODE_CONTENT, CDATA_SECTION, DIRECT_COMMENT_CONSTRUCTOR, DIRECT_PI_CONSTRUCTOR, COMPUTED_DOCUMENT_CONSTRUCTOR, COMPUTED_ATTRIBUTE_CONSTRUCTOR, COMPUTED_ELEMENT_CONSTRUCTOR, COMPUTED_TEXT_CONSTRUCTOR, COMPUTED_COMMENT_CONSTRUCTOR, EMPTY_SEQUENCE_TYPE, RELATIVE_PATH_EXPRESSION, COMPUTED_PI_CONSTRUCTOR, NCNAME, CONTENT_CHARS, NAMESPACE_DECLARATION, SINGLE_TYPE + VERSION_DECL, + PROLOG, + LIBRARY_MODULE, + MODULE_DECLARATION, + MAIN_MODULE, + QUERY_BODY, + BOUNDARY_SPACE_DECLARATION, + DEFAULT_ELEMENT_NAMESPACE_DECLARATION, + DEFAULT_FUNCTION_NAMESPACE_DECLARATION, + OPTION_DECLARATION, + FT_OPTION_DECLARATION, + ORDERING_MODE_DECLARATION, + EMPTY_ORDER_DECLARATION, + COPY_NAMESPACES_DECLARATION, + DEFAULT_COLLATION_DECLARATION, + BASE_URI_DECLARATION, + SCHEMA_IMPORT, + MODULE_IMPORT, + VARIABLE_DECLARATION, + TYPE_DECLARATION, + SEQUENCE_TYPE, + ITEM_TYPE, + ATOMIC_TYPE, + ANY_NODE_TEST, + ITEM_TEST, + DOCUMENT_TEST, + QNAME, + ELEMENT_TEST, + SCHEMA_ELEMENT_TEST, + ATTRIBUTE_TEST, + SCHEMA_ATTRIBUTE_TEST, + TEXT_TEST, + COMMENT_TEST, + PI_TEST, + TYPE_NAME, + CONSTRUCTION_DECLARATION, + FUNCTION_DECLARATION, + FUNCTION_PARAMETER, + ENCLOSED_EXPRESSION, + EXPRESSION, + FLWOR_EXPRESSION, + FOR_CLAUSE, + FOR_VARIABLE_DECLARATION, + LET_VARIABLE_DECLARATION, + LET_CLAUSE, + WHERE_CLAUSE, + ORDERBY_CLAUSE, + ORDER_SPECIFICATION, + QUANTIFIED_EXPRESSION, + QUANTIFIED_VARIABLE_DECLARATION, + TYPESWITCH_EXPRESSION, + CASE_CLAUSE, + IF_EXPRESSION, + INFIX_EXPRESSION, + TYPE_EXPRESSION, + UNARY_EXPRESSION, + VALIDATE_EXPRESSION, + EXTENSION_EXPRESSION, + PRAGMA_NODE, + PATH_EXPRESSION, + AXIS_STEP, + NAME_TEST, + FILTER_EXPRESSION, + LITERAL, + VARIABLE_REFERENCE, + PARENTHESIZED_EXPRESSION, + CONTEXT_ITEM, + ORDERED_EXPRESSION, + UNORDERED_EXPRESSION, + FUNCTION_EXPRESSION, + ARRAY_CONSTRUCTOR, + DIRECT_ELEMENT_CONSTRUCTOR, + DIRECT_ATTRIBUTE_CONSTRUCTOR, + DQUOTED_ATTRIBUTE_CONTENT, + SQUOTED_ATTRIBUTE_CONTENT, + TEXTUAL_NODE_CONTENT, + CDATA_SECTION, + DIRECT_COMMENT_CONSTRUCTOR, + DIRECT_PI_CONSTRUCTOR, + COMPUTED_DOCUMENT_CONSTRUCTOR, + COMPUTED_ATTRIBUTE_CONSTRUCTOR, + COMPUTED_ELEMENT_CONSTRUCTOR, + COMPUTED_TEXT_CONSTRUCTOR, + COMPUTED_COMMENT_CONSTRUCTOR, + EMPTY_SEQUENCE_TYPE, + RELATIVE_PATH_EXPRESSION, + COMPUTED_PI_CONSTRUCTOR, + NCNAME, + CONTENT_CHARS, + NAMESPACE_DECLARATION, + SINGLE_TYPE } http://git-wip-us.apache.org/repos/asf/vxquery/blob/2410db88/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ArrayConstructorNode.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ArrayConstructorNode.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ArrayConstructorNode.java new file mode 100644 index 0000000..235f2c9 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/ast/ArrayConstructorNode.java @@ -0,0 +1,27 @@ +package org.apache.vxquery.xmlquery.ast; + +import java.util.List; + +import org.apache.vxquery.util.SourceLocation; + +public class ArrayConstructorNode extends ASTNode { + private List<ASTNode> items; + + public ArrayConstructorNode(SourceLocation loc) { + super(loc); + } + + @Override + public ASTTag getTag() { + return ASTTag.ARRAY_CONSTRUCTOR; + } + + public List<ASTNode> getItems() { + return items; + } + + public void setItems(List<ASTNode> items) { + this.items = items; + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/2410db88/vxquery-core/src/main/javacc/xquery-grammar.jj ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/javacc/xquery-grammar.jj b/vxquery-core/src/main/javacc/xquery-grammar.jj index 7c0491a..91c9904 100644 --- a/vxquery-core/src/main/javacc/xquery-grammar.jj +++ b/vxquery-core/src/main/javacc/xquery-grammar.jj @@ -1796,6 +1796,7 @@ ASTNode PrimaryExpr(): | LOOKAHEAD(2) expr = OrderedExpr() | LOOKAHEAD(2) expr = UnorderedExpr() | expr = Constructor() + | expr = JsonConstructor() ) { return expr; } @@ -1937,6 +1938,47 @@ ASTNode FunctionCall() : } } +ASTNode JsonConstructor() : +{ + ASTNode result; +} +{ + result = ArrayConstructor() + { + return result; + } +} + +ASTNode ArrayConstructor() : +{ + Token start, end; + List<ASTNode> items; +} +{ + start="[" items=ArrayItemList() end="]" { + ArrayConstructorNode array = new ArrayConstructorNode(createSourceLocation(start)); + array.setItems(items); + return array; + } +} + +List<ASTNode> ArrayItemList() : +{ + List<ASTNode> items = new ArrayList<ASTNode>(); + ASTNode arraynode; +} +{[ + arraynode = Literal() { + items.add(arraynode); + } ( + "," arraynode = Literal() { + items.add(arraynode); + } + )* ]{ + return items; + } +} + ASTNode Constructor() : { ASTNode result;
