Still working on JsonParser
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_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, 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
 
 }
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;
+    }
+
+}
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 @@
         | LOOKAHEAD(2) expr = OrderedExpr()
         | LOOKAHEAD(2) expr = UnorderedExpr()
         | expr = Constructor()
+        | expr = JsonConstructor()
     ) {
         return expr;
     }
@@ -1937,6 +1938,47 @@
     }
 }
 
+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;