diff --git a/0001-Add-pre-generated-Java-classes.patch b/0001-Add-pre-generated-Java-classes.patch deleted file mode 100644 index 9d814ead69e5d72b7a402f66f1acacf87479adde..0000000000000000000000000000000000000000 --- a/0001-Add-pre-generated-Java-classes.patch +++ /dev/null @@ -1,2182 +0,0 @@ -From 8c60f8b062e64cf6bbe396923b4e42c02624bf6f Mon Sep 17 00:00:00 2001 -From: gil -Date: Fri, 27 May 2016 16:16:21 +0200 -Subject: [PATCH] Add pre-generated Java classes - ---- - src/main/java/org/jboss/dmr/JSONParser.java | 1042 +++++++++++++++++++++++++ - src/main/java/org/jboss/dmr/Parser.java | 1113 +++++++++++++++++++++++++++ - 2 files changed, 2155 insertions(+) - create mode 100644 src/main/java/org/jboss/dmr/JSONParser.java - create mode 100644 src/main/java/org/jboss/dmr/Parser.java - -diff --git a/src/main/java/org/jboss/dmr/JSONParser.java b/src/main/java/org/jboss/dmr/JSONParser.java -new file mode 100644 -index 0000000..a59782f ---- /dev/null -+++ b/src/main/java/org/jboss/dmr/JSONParser.java -@@ -0,0 +1,1042 @@ -+/* -+ * JBoss, Home of Professional Open Source. -+ * Copyright 2011, Red Hat, Inc., and individual contributors -+ * as indicated by the @author tags. See the copyright.txt file in the -+ * distribution for a full listing of individual contributors. -+ * -+ * This is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU Lesser General Public License as -+ * published by the Free Software Foundation; either version 2.1 of -+ * the License, or (at your option) any later version. -+ * -+ * This software is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this software; if not, write to the Free -+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. -+ */ -+package org.jboss.dmr; -+ -+import java.io.IOException; -+import java.io.InputStream; -+ -+import java.util.LinkedList; -+import java.util.Vector; -+import java.util.Stack; -+ -+public abstract class JSONParser -+{ -+ protected final static int OPEN_BRACE = 256; -+ protected final static int CLOSE_BRACE = 257; -+ protected final static int OPEN_BRACKET = 258; -+ protected final static int CLOSE_BRACKET = 259; -+ protected final static int COLON = 260; -+ protected final static int COMMA = 261; -+ protected final static int BIG = 262; -+ protected final static int INTEGER = 263; -+ protected final static int DECIMAL = 264; -+ protected final static int UNDEFINED = 265; -+ protected final static int TRUE = 266; -+ protected final static int FALSE = 267; -+ protected final static int ZERO_VAL = 268; -+ protected final static int OCTAL_INT_VAL = 269; -+ protected final static int HEX_INT_VAL = 270; -+ protected final static int SIGNED_HEX_INT_VAL = 271; -+ protected final static int DEC_INT_VAL = 272; -+ protected final static int NAN_VAL = 273; -+ protected final static int INF_VAL = 274; -+ protected final static int DEC_VAL = 275; -+ protected final static int STR_VAL = 276; -+ -+ protected final static int INITIAL = 0; -+ -+ // an internal class for lazy initiation -+ private final static class cc_lexer -+ { -+ private static char[] accept = ("\000\027\026\027\005\027\015\021\006\027\027\003\004\027\027\027\027\027\027\001\002\030\000\025\000\015\000\000\000\015\016\000\000\000\000\000\000\000\000\000\000\024\017\000\022\011\000\000\000\000\000\020\000\000\000\000\000\014\007\000\024\000\000\010\000\000\000\000\000\012\013\023").toCharArray (); -+ private static char[] ecs = ("\000\000\000\000\000\000\000\000\000\001\002\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000\000\000\000\000\000\000\000\004\005\006\000\007\010\010\010\010\010\010\010\010\010\011\000\000\000\000\000\000\012\012\012\012\013\012\000\000\014\000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\000\016\017\020\000\000\000\021\022\023\024\025\026\027\000\030\000\000\031\032\033\000\000\000\034\035\036\037\000\000\040\041\000\042\000\043\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044").toCharArray (); -+ private static char[] base = ("\065\000\003\000\000\047\000\014\000\002\005\000\000\014\022\037\026\023\076\000\000\000\000\000\000\073\000\000\002\074\005\006\107\121\110\115\110\104\112\105\027\000\000\115\000\000\116\112\123\120\125\000\036\120\122\130\127\000\000\152\000\130\140\000\135\125\133\131\125\000\000\000\167\000\171").toCharArray (); -+ private static char[] next = ("\026\000\026\027\002\002\034\035\036\051\051\064\036\052\052\030\052\052\034\007\007\064\041\052\052\052\052\052\052\040\063\063\037\063\063\073\042\074\074\043\063\063\063\063\063\063\031\007\044\045\046\032\033\001\002\002\003\004\005\001\006\007\010\001\001\011\012\013\001\014\001\015\001\016\001\017\001\020\001\001\021\001\001\022\001\001\001\023\024\025\047\050\000\053\054\055\056\057\060\061\062\065\066\067\070\071\072\075\076\077\100\000\101\102\103\104\105\106\107\026\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000").toCharArray (); -+ private static char[] check = ("\111\112\111\003\002\002\006\006\006\034\034\051\036\037\037\003\037\037\007\007\007\051\012\037\037\037\037\037\037\011\050\050\006\050\050\064\015\064\064\016\050\050\050\050\050\050\005\005\017\020\021\005\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\031\035\040\041\042\043\044\045\046\047\053\056\057\060\061\062\065\066\067\070\073\075\076\100\101\102\103\104\110\110\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112\112").toCharArray (); -+ private static char[] defaults = ("\112\112\001\110\112\001\001\001\112\001\001\112\112\001\001\001\001\001\001\112\112\112\003\112\111\006\011\012\001\006\035\001\001\001\001\001\001\001\001\001\001\034\037\001\112\112\001\001\001\001\001\050\001\001\001\001\001\112\112\064\073\001\001\112\001\001\001\001\001\112\112\112\112\112\112").toCharArray (); -+ private static char[] meta = ("\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003").toCharArray (); -+ } -+ -+ // an internal class for lazy initiation -+ private final static class cc_parser -+ { -+ private static char[] rule = ("\000\001\001\001\001\001\001\001\001\001\001\001\001\002\002\003\002\002\003\001\001\002\003\004\005").toCharArray (); -+ private static char[] ecs = ("\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\003\004\005\006\007\000\000\000\010\011\012\013\014\015\016\017\020\021\022\023").toCharArray (); -+ private static char[] base = ("\016\160\006\000\042\043\053\054\064\065\075\076\106\107\117\002\014\001\151\120\011\130\160\131\020\141\001\000\142\177\152\036\007\000\012\u0087\u0092\u009c\u0096\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u0097\u009c\u009c\u0098\u009c\u009c\u009c\u009c\u009c\u0099\u009c\u009c").toCharArray (); -+ private static char[] next = ("\uffec\000\uffff\uffec\036\uffec\027\uffec\030\000\uffe9\025\ufffe\uffe8\uffe9\033\001\uffe8\002\000\037\034\003\004\005\006\007\010\011\012\013\014\015\016\ufff5\ufff4\041\ufff5\ufff4\ufff5\ufff4\ufff5\ufff4\ufffd\ufff8\000\ufffd\ufff8\ufffd\ufff8\ufffd\ufff8\ufff7\ufff6\000\ufff7\ufff6\ufff7\ufff6\ufff7\ufff6\ufff9\ufffb\000\ufff9\ufffb\ufff9\ufffb\ufff9\ufffb\ufffa\ufffc\000\ufffa\ufffc\ufffa\ufffc\ufffa\ufffc\uffed\ufff0\000\uffed\ufff0\uffed\ufff0\uffed\ufff0\ufff3\ufff2\000\ufff3\ufff2\ufff3\ufff2\ufff3\ufff2\uffef\ufff1\000\uffef\ufff1\uffef\ufff1\uffef\ufff1\uffee\000\031\uffee\000\uffee\032\uffee\000\023\000\uffeb\000\uffeb\000\000\000\000\000\000\000\000\000\000\000\024\uffea\000\uffea\000\000\000\000\000\000\000\000\000\000\000\000\017\020\021\022\000\026\035\040\042\000\000\000\000\000").toCharArray (); -+ private static char[] check = ("\003\021\017\003\032\003\021\003\021\024\040\002\020\042\040\024\000\042\000\003\032\030\000\000\000\000\000\000\000\000\000\000\000\000\004\005\037\004\005\004\005\004\005\006\007\043\006\007\006\007\006\007\010\011\043\010\011\010\011\010\011\012\013\043\012\013\012\013\012\013\014\015\043\014\015\014\015\014\015\016\023\043\016\023\016\023\016\023\025\027\043\025\027\025\027\025\027\031\034\043\031\034\031\034\031\034\036\043\022\036\022\036\022\036\001\001\001\026\043\026\001\001\001\001\001\001\001\001\001\001\001\001\035\043\035\043\043\043\043\043\043\043\043\043\043\043\043\044\044\044\044\046\046\074\077\105\107\107\107\107\107").toCharArray (); -+ private static char[] defaults = ("\043\000\000\001\003\003\003\003\003\003\003\003\003\003\003\043\017\017\021\003\017\003\021\003\000\003\001\000\003\021\003\024\022\000\022\043").toCharArray (); -+ private static char[] gotoDefault = ("\107\107\044\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\107\046\107\107\046\107\107\107\107\107\046\107\107").toCharArray (); -+ private static char[] lhs = ("\000\024\025\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\027\027\030\030").toCharArray (); -+ } -+ -+ private final static class YYParserState // internal tracking tool -+ { -+ int token; // the current token type -+ Object value; // the current value associated with token -+ int state; // the current scan state -+ -+ YYParserState () // EOF token construction -+ { -+ this (0, null, 0); -+ } -+ YYParserState (int token) -+ { -+ this (token, null, 0); -+ } -+ YYParserState (int token, Object value) -+ { -+ this (token, value, 0); -+ } -+ YYParserState (int token, Object value, int state) -+ { -+ this.token = token; -+ this.value = value; -+ this.state = state; -+ } -+ } -+ -+ // lookahead stack for the parser -+ private final LinkedList _yyLookaheadStack = new LinkedList (); -+ // state stack for the parser -+ private final Vector _yyStateStack = new Vector (512, 512); -+ // flag that indicates error -+ private boolean _yyInError; -+ // internal track of the argument start -+ private int _yyArgStart; -+ // for passing value from lexer to parser -+ private Object _yyValue; -+ -+ private InputStream _yyIs = System.in; -+ private byte[] _yyBuffer; -+ private int _yyBufferSize = 4096; -+ private int _yyMatchStart; -+ private int _yyBufferEnd; -+ -+ private int _yyBaseState; -+ -+ private int _yyTextStart; -+ private int _yyLength; -+ -+ private Stack _yyLexerStack; -+ private Stack _yyInputStack; -+ -+ -+ /** -+ * Set the current input. -+ * -+ * @param is -+ * the new input. -+ */ -+ public void setInput (InputStream is) -+ { -+ _yyIs = is; -+ } -+ -+ /** -+ * Obtain the current input. -+ * -+ * @return the current input -+ */ -+ public InputStream getInput () -+ { -+ return _yyIs; -+ } -+ -+ /** -+ * Switch the current input to the new input. The old input and already -+ * buffered characters are pushed onto the stack. -+ * -+ * @param is -+ * the new input -+ */ -+ public void yyPushInput (InputStream is) -+ { -+ int len = _yyBufferEnd - _yyMatchStart; -+ byte[] leftOver = new byte[len]; -+ System.arraycopy (_yyBuffer, _yyMatchStart, leftOver, 0, len); -+ -+ Object[] states = new Object[4]; -+ states[0] = _yyIs; -+ states[1] = leftOver; -+ -+ if (_yyInputStack == null) -+ _yyInputStack = new Stack (); -+ _yyInputStack.push (states); -+ -+ _yyIs = is; -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ } -+ -+ /** -+ * Switch the current input to the old input on stack. The currently -+ * buffered characters are inserted infront of the old buffered characters. -+ */ -+ public void yyPopInput () -+ { -+ Object[] states = (Object[])_yyInputStack.pop (); -+ _yyIs = (InputStream)states[0]; -+ byte[] leftOver = (byte[])states[1]; -+ -+ int curLen = _yyBufferEnd - _yyMatchStart; -+ -+ if ((leftOver.length + curLen) > _yyBuffer.length) -+ { -+ byte[] newBuffer = new byte[leftOver.length + curLen]; -+ System.arraycopy (_yyBuffer, _yyMatchStart, newBuffer, 0, curLen); -+ System.arraycopy (leftOver, 0, newBuffer, curLen, leftOver.length); -+ _yyBuffer = newBuffer; -+ _yyMatchStart = 0; -+ _yyBufferEnd = leftOver.length + curLen; -+ } -+ else -+ { -+ int start = _yyMatchStart; -+ int end = _yyBufferEnd; -+ byte[] buffer = _yyBuffer; -+ -+ for (int i = 0; start < end; ++i, ++start) -+ buffer[i] = buffer[start]; -+ System.arraycopy (leftOver, 0, buffer, curLen, leftOver.length); -+ _yyMatchStart = 0; -+ _yyBufferEnd = leftOver.length + curLen; -+ } -+ } -+ -+ /** -+ * Obtain the number of input objects on the stack. -+ * -+ * @return the number of input objects on the stack. -+ */ -+ public int yyInputStackSize () -+ { -+ return _yyInputStack == null ? 0 : _yyInputStack.size (); -+ } -+ -+ -+ /** -+ * Get the current token text. -+ *

-+ * Avoid calling this function unless it is absolutely necessary since it creates -+ * a copy of the token string. The string length can be found by reading _yyLength -+ * or calling yyLength () function. -+ * -+ * @return the current text token. -+ */ -+ public String yyText () -+ { -+ if (_yyMatchStart == _yyTextStart) // this is the case when we have EOF -+ return null; -+ return new String (_yyBuffer, _yyTextStart, _yyMatchStart - _yyTextStart); -+ } -+ -+ /** -+ * Get the current text token's length. Actions specified in the CookCC file -+ * can directly access the variable _yyLength. -+ * -+ * @return the string token length -+ */ -+ public int yyLength () -+ { -+ return _yyLength; -+ } -+ -+ /** -+ * Print the current string token to the standard output. -+ */ -+ public void echo () -+ { -+ System.out.print (yyText ()); -+ } -+ -+ /** -+ * Put all but n characters back to the input stream. Be aware that calling -+ * yyLess (0) is allowed, but be sure to change the state some how to avoid -+ * an endless loop. -+ * -+ * @param n -+ * The number of characters. -+ */ -+ protected void yyLess (int n) -+ { -+ if (n < 0) -+ throw new IllegalArgumentException ("yyLess function requires a non-zero value."); -+ if (n > (_yyMatchStart - _yyTextStart)) -+ throw new IndexOutOfBoundsException ("yyLess function called with a too large index value " + n + "."); -+ _yyMatchStart = _yyTextStart + n; -+ } -+ -+ /** -+ * Set the lexer's current state. -+ * -+ * @param baseState -+ * the base state index -+ */ -+ protected void begin (int baseState) -+ { -+ _yyBaseState = baseState; -+ } -+ -+ /** -+ * Push the current state onto lexer state onto stack and -+ * begin the new state specified by the user. -+ * -+ * @param newState -+ * the new state. -+ */ -+ protected void yyPushLexerState (int newState) -+ { -+ if (_yyLexerStack == null) -+ _yyLexerStack = new Stack (); -+ _yyLexerStack.push (new Integer (_yyBaseState)); -+ begin (newState); -+ } -+ -+ /** -+ * Restore the previous lexer state. -+ */ -+ protected void yyPopLexerState () -+ { -+ begin (((Integer)_yyLexerStack.pop ()).intValue ()); -+ } -+ -+ -+ // read more data from the input -+ protected boolean yyRefreshBuffer () throws IOException -+ { -+ if (_yyBuffer == null) -+ _yyBuffer = new byte[_yyBufferSize]; -+ if (_yyMatchStart > 0) -+ { -+ if (_yyBufferEnd > _yyMatchStart) -+ { -+ System.arraycopy (_yyBuffer, _yyMatchStart, _yyBuffer, 0, _yyBufferEnd - _yyMatchStart); -+ _yyBufferEnd -= _yyMatchStart; -+ _yyMatchStart = 0; -+ } -+ else -+ { -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ } -+ } -+ else if (_yyBufferEnd == _yyBuffer.length) -+ { -+ byte[] newBuffer = new byte[_yyBuffer.length + _yyBuffer.length / 2]; -+ System.arraycopy (_yyBuffer, 0, newBuffer, 0, _yyBufferEnd); -+ _yyBuffer = newBuffer; -+ } -+ -+ int readSize = _yyIs.read (_yyBuffer, _yyBufferEnd, _yyBuffer.length - _yyBufferEnd); -+ if (readSize > 0) -+ _yyBufferEnd += readSize; -+ else if (readSize < 0 && !yyWrap ()) // since we are at EOF, call yyWrap (). If the return value of yyWrap is false, refresh buffer again -+ return yyRefreshBuffer (); -+ return readSize >= 0; -+ } -+ -+ /** -+ * Reset the internal buffer. -+ */ -+ public void yyResetBuffer () -+ { -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ } -+ -+ /** -+ * Set the internal buffer size. This action can only be performed -+ * when the buffer is empty. Having a large buffer is useful to read -+ * a whole file in to increase the performance sometimes. -+ * -+ * @param bufferSize -+ * the new buffer size. -+ */ -+ public void setBufferSize (int bufferSize) -+ { -+ if (_yyBufferEnd > _yyMatchStart) -+ throw new IllegalArgumentException ("Cannot change lexer buffer size at this moment."); -+ _yyBufferSize = bufferSize; -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ if (_yyBuffer != null && bufferSize != _yyBuffer.length) -+ _yyBuffer = new byte[bufferSize]; -+ } -+ -+ /** -+ * Call this function to start the scanning of the input. -+ * -+ * @return a token or status value. -+ * @throws IOException -+ * in case of I/O error. -+ */ -+ protected int yyLex () throws IOException -+ { -+ -+ char[] cc_ecs = cc_lexer.ecs; -+ char[] cc_next = cc_lexer.next; -+ char[] cc_check = cc_lexer.check; -+ char[] cc_base = cc_lexer.base; -+ char[] cc_default = cc_lexer.defaults; -+ char[] cc_meta = cc_lexer.meta; -+ char[] cc_accept = cc_lexer.accept; -+ -+ byte[] buffer = _yyBuffer; -+ -+ while (true) -+ { -+ // initiate variables necessary for lookup -+ int cc_matchedState = _yyBaseState; -+ -+ int matchedLength = 0; -+ -+ int internalBufferEnd = _yyBufferEnd; -+ int lookahead = _yyMatchStart; -+ -+ int cc_backupMatchedState = cc_matchedState; -+ int cc_backupMatchedLength = 0; -+ -+ // the DFA lookup -+ while (true) -+ { -+ // check buffer status -+ if (lookahead < internalBufferEnd) -+ { -+ // now okay to process the character -+ int cc_toState; -+ int symbol = cc_ecs[buffer[lookahead] & 0xff]; -+ cc_toState = cc_matchedState; -+ while (cc_check[symbol + cc_base[cc_toState]] != cc_toState) -+ { -+ cc_toState = cc_default[cc_toState]; -+ if (cc_toState >= 72) -+ symbol = cc_meta[symbol]; -+ } -+ cc_toState = cc_next[symbol + cc_base[cc_toState]]; -+ -+ if (cc_toState == 0) -+ { -+ cc_matchedState = cc_backupMatchedState; -+ matchedLength = cc_backupMatchedLength; -+ break; -+ } -+ -+ cc_matchedState = cc_toState; -+ ++lookahead; -+ ++matchedLength; -+ -+ if (cc_accept[cc_matchedState] > 0) -+ { -+ cc_backupMatchedState = cc_toState; -+ cc_backupMatchedLength = matchedLength; -+ } -+ } -+ else -+ { -+ int lookPos = lookahead - _yyMatchStart; -+ boolean refresh = yyRefreshBuffer (); -+ buffer = _yyBuffer; -+ internalBufferEnd = _yyBufferEnd; -+ lookahead = _yyMatchStart + lookPos; -+ if (! refresh) -+ { -+ // <> -+ int cc_toState; -+ int symbol = cc_ecs[256]; -+ cc_toState = cc_matchedState; -+ while (cc_check[symbol + cc_base[cc_toState]] != cc_toState) -+ { -+ cc_toState = cc_default[cc_toState]; -+ if (cc_toState >= 72) -+ symbol = cc_meta[symbol]; -+ } -+ cc_toState = cc_next[symbol + cc_base[cc_toState]]; -+ -+ if (cc_toState != 0) -+ cc_matchedState = cc_toState; -+ else -+ { -+ cc_matchedState = cc_backupMatchedState; -+ matchedLength = cc_backupMatchedLength; -+ } -+ break; -+ } -+ } -+ } -+ -+ _yyTextStart = _yyMatchStart; -+ _yyMatchStart += matchedLength; -+ _yyLength = matchedLength; -+ -+ -+ switch (cc_accept[cc_matchedState]) -+ { -+ case 1: // \{ -+ { -+ _yyValue = m_this.parseToken (); return OPEN_BRACE; -+ } -+ case 28: break; -+ case 2: // \} -+ { -+ _yyValue = m_this.parseToken (); return CLOSE_BRACE; -+ } -+ case 29: break; -+ case 3: // \[ -+ { -+ _yyValue = m_this.parseToken (); return OPEN_BRACKET; -+ } -+ case 30: break; -+ case 4: // \] -+ { -+ _yyValue = m_this.parseToken (); return CLOSE_BRACKET; -+ } -+ case 31: break; -+ case 5: // , -+ { -+ _yyValue = m_this.parseToken (); return COMMA; -+ } -+ case 32: break; -+ case 6: // : -+ { -+ _yyValue = m_this.parseToken (); return COLON; -+ } -+ case 33: break; -+ case 7: // true -+ { -+ _yyValue = m_this.parseToken (); return TRUE; -+ } -+ case 34: break; -+ case 8: // false -+ { -+ _yyValue = m_this.parseToken (); return FALSE; -+ } -+ case 35: break; -+ case 9: // big -+ { -+ _yyValue = m_this.parseToken (); return BIG; -+ } -+ case 36: break; -+ case 10: // decimal -+ { -+ _yyValue = m_this.parseToken (); return DECIMAL; -+ } -+ case 37: break; -+ case 11: // integer -+ { -+ _yyValue = m_this.parseToken (); return INTEGER; -+ } -+ case 38: break; -+ case 12: // null -+ { -+ _yyValue = m_this.parseToken (); return UNDEFINED; -+ } -+ case 39: break; -+ case 13: // [+-]?0+ -+ { -+ _yyValue = m_this.parsePlainValue (); return ZERO_VAL; -+ } -+ case 40: break; -+ case 14: // [+-]?0[0-9]+ -+ { -+ _yyValue = m_this.parsePlainValue (); return OCTAL_INT_VAL; -+ } -+ case 41: break; -+ case 15: // 0x[0-9a-fA-F]+ -+ { -+ _yyValue = m_this.parsePlainValue (); return HEX_INT_VAL; -+ } -+ case 42: break; -+ case 16: // [+-]0x[0-9a-fA-F]+ -+ { -+ _yyValue = m_this.parsePlainValue (); return SIGNED_HEX_INT_VAL; -+ } -+ case 43: break; -+ case 17: // [+-]?[1-9][0-9]* -+ { -+ _yyValue = m_this.parsePlainValue (); return DEC_INT_VAL; -+ } -+ case 44: break; -+ case 18: // [+-]?NaN -+ { -+ _yyValue = m_this.parsePlainValue (); return NAN_VAL; -+ } -+ case 45: break; -+ case 19: // [+-]?Infinity -+ { -+ _yyValue = m_this.parsePlainValue (); return INF_VAL; -+ } -+ case 46: break; -+ case 20: // [+-]?([0-9]+\.[0-9]+([eE][+-]?[0-9]+)?) -+ { -+ _yyValue = m_this.parsePlainValue (); return DEC_VAL; -+ } -+ case 47: break; -+ case 21: // \"([^"\\]+|\\.)*\" -+ { -+ _yyValue = m_this.parseStringValue (); return STR_VAL; -+ } -+ case 48: break; -+ case 22: // [ \t\r\n]+ -+ { -+ m_this.ignored (); -+ } -+ case 49: break; -+ case 23: // . -+ { -+ m_this.invalid (); -+ } -+ case 50: break; -+ case 24: // <> -+ { -+ m_this.parseEOF (); return 0; -+ } -+ case 51: break; -+ case 25: // .|\n -+ { -+ echo (); // default character action -+ } -+ case 52: break; -+ case 26: // <> -+ { -+ return 0; // default EOF action -+ } -+ case 53: break; -+ default: -+ throw new IOException ("Internal error in JSONParser lexer."); -+ } -+ -+ } -+ } -+ -+ -+ /** -+ * Call this function to start parsing. -+ * -+ * @return 0 if everything is okay, or 1 if an error occurred. -+ * @throws IOException -+ * in case of error -+ */ -+ public int yyParse () throws IOException -+ { -+ char[] cc_ecs = cc_parser.ecs; -+ char[] cc_next = cc_parser.next; -+ char[] cc_check = cc_parser.check; -+ char[] cc_base = cc_parser.base; -+ char[] cc_default = cc_parser.defaults; -+ char[] cc_gotoDefault = cc_parser.gotoDefault; -+ char[] cc_rule = cc_parser.rule; -+ char[] cc_lhs = cc_parser.lhs; -+ -+ LinkedList cc_lookaheadStack = _yyLookaheadStack; -+ Vector cc_stateStack = _yyStateStack; -+ -+ if (cc_stateStack.size () == 0) -+ cc_stateStack.add (new YYParserState ()); -+ -+ int cc_toState = 0; -+ -+ for (;;) -+ { -+ YYParserState cc_lookahead; -+ -+ int cc_fromState; -+ char cc_ch; -+ -+ // -+ // check if there are any lookahead tokens on stack -+ // if not, then call yyLex () -+ // -+ if (cc_lookaheadStack.size () == 0) -+ { -+ _yyValue = null; -+ int val = yyLex (); -+ cc_lookahead = new YYParserState (val, _yyValue); -+ cc_lookaheadStack.add (cc_lookahead); -+ } -+ else -+ cc_lookahead = (YYParserState)cc_lookaheadStack.getLast (); -+ -+ cc_ch = cc_ecs[cc_lookahead.token]; -+ cc_fromState = ((YYParserState)cc_stateStack.get (cc_stateStack.size () - 1)).state; -+ int cc_symbol = cc_ch; -+ cc_toState = cc_fromState; -+ while (cc_check[cc_symbol + cc_base[cc_toState]] != cc_toState) -+ { -+ cc_toState = cc_default[cc_toState]; -+ if (cc_toState >= 35) -+ cc_symbol = 0; -+ } -+ cc_toState = (short)cc_next[cc_symbol + cc_base[cc_toState]]; -+ -+ -+ // -+ // check the value of toState and determine what to do -+ // with it -+ // -+ if (cc_toState > 0) -+ { -+ // shift -+ cc_lookahead.state = cc_toState; -+ cc_stateStack.add (cc_lookahead); -+ cc_lookaheadStack.removeLast (); -+ continue; -+ } -+ else if (cc_toState == 0) -+ { -+ // error -+ if (_yyInError) -+ { -+ // first check if the error is at the lookahead -+ if (cc_ch == 1) -+ { -+ // so we need to reduce the stack until a state with reduceable -+ // action is found -+ if (_yyStateStack.size () > 1) -+ _yyStateStack.setSize (_yyStateStack.size () - 1); -+ else -+ return 1; // can't do much we exit the parser -+ } -+ else -+ { -+ // this means that we need to dump the lookahead. -+ if (cc_ch == 0) // can't do much with EOF; -+ return 1; -+ cc_lookaheadStack.removeLast (); -+ } -+ continue; -+ } -+ else -+ { -+ if (yyParseError (cc_lookahead.token)) -+ return 1; -+ _yyLookaheadStack.add (new YYParserState (1, _yyValue)); -+ _yyInError = true; -+ continue; -+ } -+ } -+ _yyInError = false; -+ // now the reduce action -+ int cc_ruleState = -cc_toState; -+ -+ _yyArgStart = cc_stateStack.size () - cc_rule[cc_ruleState] - 1; -+ // -+ // find the state that said need this non-terminal -+ // -+ cc_fromState = ((YYParserState)cc_stateStack.get (_yyArgStart)).state; -+ -+ // -+ // find the state to goto after shifting the non-terminal -+ // onto the stack. -+ // -+ if (cc_ruleState == 1) -+ cc_toState = 0; // reset the parser -+ else -+ { -+ cc_toState = cc_fromState + 36; -+ int cc_tmpCh = cc_lhs[cc_ruleState] - 20; -+ while (cc_check[cc_tmpCh + cc_base[cc_toState]] != cc_toState) -+ cc_toState = cc_gotoDefault[cc_toState - 36]; -+ cc_toState = cc_next[cc_tmpCh + cc_base[cc_toState]]; -+ } -+ -+ _yyValue = null; -+ -+ switch (cc_ruleState) -+ { -+ case 1: // accept -+ return 0; -+ case 2: // complete : node -+ { -+ return m_this.parse ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 27: break; -+ case 3: // node : ZERO_VAL -+ { -+ _yyValue = m_this.parseZero (); -+ } -+ case 28: break; -+ case 4: // node : DEC_VAL -+ { -+ _yyValue = m_this.parseBigDecimal ((java.lang.String)yyGetValue (1)); -+ } -+ case 29: break; -+ case 5: // node : NAN_VAL -+ { -+ _yyValue = m_this.parseNaN (); -+ } -+ case 30: break; -+ case 6: // node : INF_VAL -+ { -+ _yyValue = m_this.parseInf ((java.lang.String)yyGetValue (1)); -+ } -+ case 31: break; -+ case 7: // node : DEC_INT_VAL -+ { -+ _yyValue = m_this.parseDecInt ((java.lang.String)yyGetValue (1)); -+ } -+ case 32: break; -+ case 8: // node : OCTAL_INT_VAL -+ { -+ _yyValue = m_this.parseOctal ((java.lang.String)yyGetValue (1)); -+ } -+ case 33: break; -+ case 9: // node : HEX_INT_VAL -+ { -+ _yyValue = m_this.parseHex ((java.lang.String)yyGetValue (1)); -+ } -+ case 34: break; -+ case 10: // node : SIGNED_HEX_INT_VAL -+ { -+ _yyValue = m_this.parseHexSigned ((java.lang.String)yyGetValue (1)); -+ } -+ case 35: break; -+ case 11: // node : TRUE -+ { -+ _yyValue = m_this.parseTrue (); -+ } -+ case 36: break; -+ case 12: // node : FALSE -+ { -+ _yyValue = m_this.parseFalse (); -+ } -+ case 37: break; -+ case 13: // node : OPEN_BRACKET CLOSE_BRACKET -+ { -+ _yyValue = m_this.parseEmptyList (); -+ } -+ case 38: break; -+ case 14: // node : list CLOSE_BRACKET -+ { -+ _yyValue = m_this.finishList ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 39: break; -+ case 15: // node : list COMMA CLOSE_BRACKET -+ { -+ _yyValue = m_this.finishList ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 40: break; -+ case 16: // node : OPEN_BRACE CLOSE_BRACE -+ { -+ _yyValue = m_this.parseEmptyObject (); -+ } -+ case 41: break; -+ case 17: // node : object CLOSE_BRACE -+ { -+ _yyValue = m_this.finishObject ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 42: break; -+ case 18: // node : object COMMA CLOSE_BRACE -+ { -+ _yyValue = m_this.finishObject ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 43: break; -+ case 19: // node : STR_VAL -+ { -+ _yyValue = m_this.parseString ((java.lang.String)yyGetValue (1)); -+ } -+ case 44: break; -+ case 20: // node : UNDEFINED -+ { -+ _yyValue = m_this.parseUndefined (); -+ } -+ case 45: break; -+ case 21: // list : OPEN_BRACKET node -+ { -+ _yyValue = m_this.parseStartList ((org.jboss.dmr.ModelNode)yyGetValue (2)); -+ } -+ case 46: break; -+ case 22: // list : list COMMA node -+ { -+ _yyValue = m_this.parseListItem ((org.jboss.dmr.ModelNode)yyGetValue (1), (org.jboss.dmr.ModelNode)yyGetValue (3)); -+ } -+ case 47: break; -+ case 23: // object : OPEN_BRACE STR_VAL COLON node -+ { -+ _yyValue = m_this.parseStartObject ((java.lang.String)yyGetValue (2), (org.jboss.dmr.ModelNode)yyGetValue (4)); -+ } -+ case 48: break; -+ case 24: // object : object COMMA STR_VAL COLON node -+ { -+ _yyValue = m_this.parseObjectItem ((org.jboss.dmr.ModelNode)yyGetValue (1), (java.lang.String)yyGetValue (3), (org.jboss.dmr.ModelNode)yyGetValue (5)); -+ } -+ case 49: break; -+ default: -+ throw new IOException ("Internal error in JSONParser parser."); -+ } -+ -+ YYParserState cc_reduced = new YYParserState (-cc_ruleState, _yyValue, cc_toState); -+ _yyValue = null; -+ cc_stateStack.setSize (_yyArgStart + 1); -+ cc_stateStack.add (cc_reduced); -+ } -+ } -+ -+ /** -+ * This function is used by the error handling grammars to check the immediate -+ * lookahead token on the stack. -+ * -+ * @return the top of lookahead stack. -+ */ -+ protected YYParserState yyPeekLookahead () -+ { -+ return (YYParserState)_yyLookaheadStack.getLast (); -+ } -+ -+ /** -+ * This function is used by the error handling grammars to pop an unwantted -+ * token from the lookahead stack. -+ */ -+ protected void yyPopLookahead () -+ { -+ _yyLookaheadStack.removeLast (); -+ } -+ -+ /** -+ * Clear the error flag. If this flag is present and the parser again sees -+ * another error transition, it would immediately calls yyParseError, which -+ * would by default exit the parser. -+ *

-+ * This function is used in error recovery. -+ */ -+ protected void yyClearError () -+ { -+ _yyInError = false; -+ } -+ -+ /** -+ * This function reports error and return true if critical error occurred, or -+ * false if the error has been successfully recovered. IOException is an optional -+ * choice of reporting error. -+ * -+ * @param terminal -+ * the terminal that caused the error. -+ * @return true if irrecoverable error occurred. Or simply throw an IOException. -+ * false if the parsing can be continued to check for specific -+ * error tokens. -+ * @throws IOException -+ * in case of error. -+ */ -+ protected boolean yyParseError (int terminal) throws IOException -+ { -+ return false; -+ } -+ -+ /** -+ * Gets the object value associated with the symbol at the argument's position. -+ * -+ * @param arg -+ * the symbol position starting from 1. -+ * @return the object value associated with symbol. -+ */ -+ protected Object yyGetValue (int arg) -+ { -+ return ((YYParserState)_yyStateStack.get (_yyArgStart + arg)).value; -+ } -+ -+ /** -+ * Set the object value for the current non-terminal being reduced. -+ * -+ * @param value -+ * the object value for the current non-terminal. -+ */ -+ protected void yySetValue (Object value) -+ { -+ _yyValue = value; -+ } -+ -+ -+ -+ -+ private final org.jboss.dmr.JSONParserImpl m_this = (org.jboss.dmr.JSONParserImpl)this; -+ -+ /** -+ * This function is used to change the initial state for the lexer. -+ * -+ * @param state -+ * the name of the state -+ */ -+ protected void begin (String state) -+ { -+ if ("INITIAL".equals (state)) -+ { -+ begin (INITIAL); -+ return; -+ } -+ throw new IllegalArgumentException ("Unknown lexer state: " + state); -+ } -+ -+ /** -+ * Push the current state onto lexer state onto stack and -+ * begin the new state specified by the user. -+ * -+ * @param state -+ * the new state. -+ */ -+ protected void yyPushLexerState (String state) -+ { -+ if ("INITIAL".equals (state)) -+ { -+ yyPushLexerState (INITIAL); -+ return; -+ } -+ throw new IllegalArgumentException ("Unknown lexer state: " + state); -+ } -+ -+ /** -+ * Check if there are more inputs. This function is called when EOF is -+ * encountered. -+ * -+ * @return true to indicate no more inputs. -+ * @throws IOException -+ * in case of an IO error -+ */ -+ protected boolean yyWrap () throws IOException -+ { -+ return true; -+ } -+ -+ -+/* -+ * lexer properties: -+ * unicode = false -+ * bol = false -+ * backup = true -+ * cases = 26 -+ * table = compressed -+ * ecs = 37 -+ * states = 72 -+ * max symbol value = 256 -+ * -+ * memory usage: -+ * full table = 18504 -+ * ecs table = 2921 -+ * next = 143 -+ * check = 143 -+ * default = 75 -+ * meta = 37 -+ * compressed table = 655 -+ * -+ * parser properties: -+ * symbols = 25 -+ * max terminal = 276 -+ * used terminals = 20 -+ * non-terminals = 5 -+ * rules = 24 -+ * shift/reduce conflicts = 0 -+ * reduct/reduce conflicts = 0 -+ * -+ * memory usage: -+ * ecs table = 1152 -+ * compressed table = 743 -+ */ -+} -diff --git a/src/main/java/org/jboss/dmr/Parser.java b/src/main/java/org/jboss/dmr/Parser.java -new file mode 100644 -index 0000000..9d7dbf4 ---- /dev/null -+++ b/src/main/java/org/jboss/dmr/Parser.java -@@ -0,0 +1,1113 @@ -+/* -+ * JBoss, Home of Professional Open Source. -+ * Copyright 2011, Red Hat, Inc., and individual contributors -+ * as indicated by the @author tags. See the copyright.txt file in the -+ * distribution for a full listing of individual contributors. -+ * -+ * This is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU Lesser General Public License as -+ * published by the Free Software Foundation; either version 2.1 of -+ * the License, or (at your option) any later version. -+ * -+ * This software is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this software; if not, write to the Free -+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. -+ */ -+package org.jboss.dmr; -+ -+import java.io.IOException; -+import java.io.InputStream; -+ -+import java.util.LinkedList; -+import java.util.Vector; -+import java.util.Stack; -+ -+/** -+ * @author David M. Lloyd -+ */ -+public abstract class Parser -+{ -+ protected final static int OPEN_BRACE = 256; -+ protected final static int CLOSE_BRACE = 257; -+ protected final static int OPEN_BRACKET = 258; -+ protected final static int CLOSE_BRACKET = 259; -+ protected final static int OPEN_PAREN = 260; -+ protected final static int CLOSE_PAREN = 261; -+ protected final static int ARROW = 262; -+ protected final static int COMMA = 263; -+ protected final static int BIG = 264; -+ protected final static int BYTES = 265; -+ protected final static int INTEGER = 266; -+ protected final static int DECIMAL = 267; -+ protected final static int EXPRESSION = 268; -+ protected final static int UNDEFINED = 269; -+ protected final static int TRUE = 270; -+ protected final static int FALSE = 271; -+ protected final static int INT_VAL = 272; -+ protected final static int INT_HEX_VAL = 273; -+ protected final static int LONG_VAL = 274; -+ protected final static int LONG_HEX_VAL = 275; -+ protected final static int DOUBLE_SPECIAL_VAL = 276; -+ protected final static int DEC_VAL = 277; -+ protected final static int STR_VAL = 278; -+ protected final static int TYPE_VAL = 279; -+ -+ protected final static int INITIAL = 0; -+ -+ // an internal class for lazy initiation -+ private final static class cc_lexer -+ { -+ private static char[] accept = ("\000\032\031\032\005\006\007\032\023\023\032\032\032\032\032\032\032\032\032\032\032\032\003\004\032\032\032\032\032\032\032\001\002\033\000\030\000\000\000\000\021\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\024\000\000\000\000\000\027\000\000\000\025\000\000\000\000\000\013\000\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\000\026\000\000\000\000\000\000\000\000\000\000\014\000\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\000\016\000\000\000\000\000\000\000\000\000\000\000\020\000\000\017").toCharArray (); -+ private static char[] ecs = ("\000\000\000\000\000\000\000\000\000\001\002\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000\000\000\000\004\005\000\000\006\007\010\000\011\012\012\012\012\012\012\012\012\012\000\000\000\013\014\000\000\015\016\017\020\021\022\023\000\024\025\000\026\027\030\031\032\000\033\034\035\036\000\000\037\040\000\041\042\043\000\044\000\045\046\047\050\051\052\053\000\054\000\000\055\056\057\060\061\000\062\063\064\065\000\000\066\067\000\070\000\071\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\072").toCharArray (); -+ private static char[] base = ("\116\000\000\000\000\000\000\003\000\001\002\000\003\000\000\001\000\001\003\006\006\017\000\000\002\001\002\003\013\011\015\000\000\000\000\000\002\016\000\065\000\043\000\030\047\044\044\051\047\033\052\057\161\165\162\161\163\176\144\134\152\141\146\140\140\156\000\u0081\164\u0083\u0089\u008d\u0081\000\161\000\u008b\000\u008e\u0086\u008d\u0091\u0092\000\173\171\164\164\177\u0080\u0081\011\000\015\u009a\u0090\u0097\u009d\u0080\u00a1\u00a0\u009a\u00a1\u0081\u0087\u008d\u008e\u008d\000\u008f\000\000\u00a9\u00a3\u00af\000\u00a1\u0092\000\u00a4\000\u00ac\000\u009c\u008f\000\u009a\u0098\u00b6\u00a9\u00af\u00ac\u0095\u00ad\u00b3\u009f\u009a\u009c\u00a0\u00bc\u00c0\u00be\u009c\u00b4\u00c4\000\u00aa\000\u00ae\u00c1\u00c6\u00c1\u00cb\u00ac\u00b5\u00d1\u00ce\000\u00b1\000\u00cb\u00c7\000\000\u00e3").toCharArray (); -+ private static char[] next = ("\042\002\002\043\000\042\000\000\047\011\011\000\010\011\052\065\156\133\157\157\053\062\050\045\060\054\063\046\056\160\066\057\055\161\044\067\042\064\070\071\076\133\074\104\103\103\072\061\103\103\103\103\103\103\051\000\075\073\077\100\101\061\102\102\105\106\107\110\111\112\113\114\103\103\103\103\103\103\001\002\002\003\004\005\006\007\001\010\011\012\001\001\013\001\014\015\001\001\016\001\017\001\020\021\022\001\023\024\025\001\001\026\001\027\001\001\030\001\031\032\033\001\034\001\001\001\001\001\001\001\035\036\001\001\037\040\041\115\116\117\120\121\122\123\124\125\126\127\130\131\132\134\135\136\137\140\141\142\111\143\144\145\111\146\147\150\151\152\153\154\155\162\111\163\164\165\166\167\170\171\172\173\174\175\176\177\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\111\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\115\111\u0098\u0099\u009a\u009b\u009c\u009d\111\u009e\u009f\u00a0\u00a1\u00a2\111\111\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000").toCharArray (); -+ private static char[] check = ("\u00a3\002\002\003\044\044\u00a4\156\010\010\010\u00a4\007\007\012\021\133\102\133\133\013\017\010\007\016\013\017\007\014\135\022\015\013\135\003\023\044\020\024\025\033\102\031\053\051\051\030\016\051\051\051\051\051\051\010\011\032\030\034\035\036\045\047\047\054\055\056\057\060\061\062\063\051\051\051\051\051\051\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\064\065\066\067\070\071\072\073\074\075\076\077\100\101\103\104\105\106\107\110\112\114\116\117\120\121\122\124\125\126\127\130\131\132\136\137\140\141\142\143\144\145\146\147\150\151\152\153\155\160\161\162\164\165\167\171\173\174\176\177\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0092\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009e\u00a0\u00a1\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4").toCharArray (); -+ private static char[] defaults = ("\u00a4\u00a4\001\u00a3\u00a4\u00a4\u00a4\001\001\010\001\001\001\001\001\001\001\001\001\001\001\001\u00a4\u00a4\001\001\001\001\001\001\001\u00a4\u00a4\u00a4\003\u00a4\003\001\020\001\u00a4\001\u00a4\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\047\051\001\001\001\001\001\u00a4\001\060\001\u00a4\001\001\001\001\001\u00a4\001\001\001\001\001\001\001\001\u00a4\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\u00a4\001\133\156\001\001\001\121\001\001\060\001\114\001\u00a4\001\001\u00a4\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\u00a4\001\u00a4\001\001\001\001\001\001\001\001\001\u0082\001\u00a4\001\001\u00a4\u00a4\u00a4").toCharArray (); -+ private static char[] meta = ("\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001").toCharArray (); -+ } -+ -+ // an internal class for lazy initiation -+ private final static class cc_parser -+ { -+ private static char[] rule = ("\000\001\001\003\003\003\001\001\002\003\003\001\002\001\001\001\001\002\002\003\002\002\003\005\001\001\001\003\003\003\003\002\003\004\005").toCharArray (); -+ private static char[] ecs = ("\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\000\026\027\030").toCharArray (); -+ private static char[] base = ("\031\060\017\001\003\000\007\u00d4\111\112\124\125\137\140\152\153\165\012\000\005\u00d5\010\166\032\u0080\004\060\u00ca\017\000\u0081\u008b\003\u008c\067\u0096\002\000\000\u0097\u00a1\u00a2\u00ac\035\064\u00ad\u00b4\u00b5\u00bc\060\u00c4\103\u00b7\u00d8\000\u00cc\u00bf\u00e2\u00f0\u00fc\u00f5\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00f6\u00fc\u00fc\u00f7\u00f8\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00f9\u00fc\u00fc\u00fc").toCharArray (); -+ private static char[] next = ("\ufffe\000\035\052\000\062\055\000\037\uffe1\uffff\043\000\uffe1\040\033\034\044\053\054\030\056\057\000\032\063\000\001\000\002\036\003\uffe5\050\045\004\005\051\uffe5\006\007\010\011\012\013\014\015\016\017\020\000\026\000\uffe0\000\uffe4\046\uffe0\000\000\060\uffe4\000\000\000\000\000\000\000\000\000\027\000\ufffa\ufff9\066\ufffa\ufff9\ufffa\ufff9\ufffa\ufff9\ufffa\ufff9\ufff3\ufff2\000\ufff3\ufff2\ufff3\ufff2\ufff3\ufff2\ufff3\ufff2\ufff1\ufff0\000\ufff1\ufff0\ufff1\ufff0\ufff1\ufff0\ufff1\ufff0\ufff5\uffe8\000\ufff5\uffe8\ufff5\uffe8\ufff5\uffe8\ufff5\uffe8\uffe7\uffec\000\uffe7\uffec\uffe7\uffec\uffe7\uffec\uffe7\uffec\uffef\ufff4\000\uffef\ufff4\uffef\ufff4\uffef\ufff4\uffef\ufff4\ufff8\uffee\000\ufff8\uffee\ufff8\uffee\ufff8\uffee\ufff8\uffee\uffeb\ufffb\000\uffeb\ufffb\uffeb\ufffb\uffeb\ufffb\uffeb\ufffb\ufffc\ufffd\000\ufffc\ufffd\ufffc\ufffd\ufffc\ufffd\ufffc\ufffd\ufff6\ufff7\000\ufff6\ufff7\ufff6\ufff7\ufff6\ufff7\ufff6\ufff7\uffe3\uffe2\000\uffdf\000\uffed\uffe3\uffe2\uffed\uffdf\uffed\uffde\uffed\uffea\uffed\000\uffea\uffde\uffea\000\uffea\uffe9\uffea\000\uffe9\000\uffe9\000\uffe9\uffe6\uffe9\000\uffe6\000\uffe6\041\uffe6\047\uffe6\042\067\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\022\023\024\025\000\031\061\064\065\070\000\000\000\000\000\000").toCharArray (); -+ private static char[] check = ("\022\071\005\035\003\044\040\023\023\031\021\025\021\031\023\004\004\025\035\035\002\040\040\005\003\044\004\000\027\000\006\000\053\034\027\000\000\034\053\000\000\000\000\000\000\000\000\000\000\000\001\001\001\061\001\054\032\061\001\001\042\054\001\001\001\001\001\001\001\001\001\001\001\010\011\063\010\011\010\011\010\011\010\011\012\013\071\012\013\012\013\012\013\012\013\014\015\071\014\015\014\015\014\015\014\015\016\017\071\016\017\016\017\016\017\016\017\020\026\071\020\026\020\026\020\026\020\026\030\036\071\030\036\030\036\030\036\030\036\037\041\071\037\041\037\041\037\041\037\041\043\047\071\043\047\043\047\043\047\043\047\050\051\071\050\051\050\051\050\051\050\051\052\055\071\052\055\052\055\052\055\052\055\056\057\071\064\071\060\056\057\060\064\060\070\060\062\060\071\062\070\062\071\062\067\062\071\067\071\067\071\067\007\067\007\007\024\007\024\007\033\007\024\065\065\033\071\071\071\071\071\071\071\071\071\071\071\071\071\071\071\072\072\072\072\072\074\074\134\137\140\160\163\163\163\163\163\163").toCharArray (); -+ private static char[] defaults = ("\071\000\000\001\003\003\003\005\007\007\007\007\007\007\007\007\007\005\021\005\023\023\007\005\007\024\027\003\033\033\007\007\033\007\000\007\001\000\000\007\007\007\007\023\023\007\023\023\007\024\007\027\023\027\000\007\023\071").toCharArray (); -+ private static char[] gotoDefault = ("\163\163\072\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\074\163\163\074\074\163\163\163\163\163\163\163\163\163\163\163\163\163\163\163\074\163\163\163").toCharArray (); -+ private static char[] lhs = ("\000\031\032\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\033\034\034\034\034\035\035\036\036").toCharArray (); -+ } -+ -+ private final static class YYParserState // internal tracking tool -+ { -+ int token; // the current token type -+ Object value; // the current value associated with token -+ int state; // the current scan state -+ -+ YYParserState () // EOF token construction -+ { -+ this (0, null, 0); -+ } -+ YYParserState (int token) -+ { -+ this (token, null, 0); -+ } -+ YYParserState (int token, Object value) -+ { -+ this (token, value, 0); -+ } -+ YYParserState (int token, Object value, int state) -+ { -+ this.token = token; -+ this.value = value; -+ this.state = state; -+ } -+ } -+ -+ // lookahead stack for the parser -+ private final LinkedList _yyLookaheadStack = new LinkedList (); -+ // state stack for the parser -+ private final Vector _yyStateStack = new Vector (512, 512); -+ // flag that indicates error -+ private boolean _yyInError; -+ // internal track of the argument start -+ private int _yyArgStart; -+ // for passing value from lexer to parser -+ private Object _yyValue; -+ -+ private InputStream _yyIs = System.in; -+ private byte[] _yyBuffer; -+ private int _yyBufferSize = 4096; -+ private int _yyMatchStart; -+ private int _yyBufferEnd; -+ -+ private int _yyBaseState; -+ -+ private int _yyTextStart; -+ private int _yyLength; -+ -+ private Stack _yyLexerStack; -+ private Stack _yyInputStack; -+ -+ -+ /** -+ * Set the current input. -+ * -+ * @param is -+ * the new input. -+ */ -+ public void setInput (InputStream is) -+ { -+ _yyIs = is; -+ } -+ -+ /** -+ * Obtain the current input. -+ * -+ * @return the current input -+ */ -+ public InputStream getInput () -+ { -+ return _yyIs; -+ } -+ -+ /** -+ * Switch the current input to the new input. The old input and already -+ * buffered characters are pushed onto the stack. -+ * -+ * @param is -+ * the new input -+ */ -+ public void yyPushInput (InputStream is) -+ { -+ int len = _yyBufferEnd - _yyMatchStart; -+ byte[] leftOver = new byte[len]; -+ System.arraycopy (_yyBuffer, _yyMatchStart, leftOver, 0, len); -+ -+ Object[] states = new Object[4]; -+ states[0] = _yyIs; -+ states[1] = leftOver; -+ -+ if (_yyInputStack == null) -+ _yyInputStack = new Stack (); -+ _yyInputStack.push (states); -+ -+ _yyIs = is; -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ } -+ -+ /** -+ * Switch the current input to the old input on stack. The currently -+ * buffered characters are inserted infront of the old buffered characters. -+ */ -+ public void yyPopInput () -+ { -+ Object[] states = (Object[])_yyInputStack.pop (); -+ _yyIs = (InputStream)states[0]; -+ byte[] leftOver = (byte[])states[1]; -+ -+ int curLen = _yyBufferEnd - _yyMatchStart; -+ -+ if ((leftOver.length + curLen) > _yyBuffer.length) -+ { -+ byte[] newBuffer = new byte[leftOver.length + curLen]; -+ System.arraycopy (_yyBuffer, _yyMatchStart, newBuffer, 0, curLen); -+ System.arraycopy (leftOver, 0, newBuffer, curLen, leftOver.length); -+ _yyBuffer = newBuffer; -+ _yyMatchStart = 0; -+ _yyBufferEnd = leftOver.length + curLen; -+ } -+ else -+ { -+ int start = _yyMatchStart; -+ int end = _yyBufferEnd; -+ byte[] buffer = _yyBuffer; -+ -+ for (int i = 0; start < end; ++i, ++start) -+ buffer[i] = buffer[start]; -+ System.arraycopy (leftOver, 0, buffer, curLen, leftOver.length); -+ _yyMatchStart = 0; -+ _yyBufferEnd = leftOver.length + curLen; -+ } -+ } -+ -+ /** -+ * Obtain the number of input objects on the stack. -+ * -+ * @return the number of input objects on the stack. -+ */ -+ public int yyInputStackSize () -+ { -+ return _yyInputStack == null ? 0 : _yyInputStack.size (); -+ } -+ -+ -+ /** -+ * Get the current token text. -+ *

-+ * Avoid calling this function unless it is absolutely necessary since it creates -+ * a copy of the token string. The string length can be found by reading _yyLength -+ * or calling yyLength () function. -+ * -+ * @return the current text token. -+ */ -+ public String yyText () -+ { -+ if (_yyMatchStart == _yyTextStart) // this is the case when we have EOF -+ return null; -+ return new String (_yyBuffer, _yyTextStart, _yyMatchStart - _yyTextStart); -+ } -+ -+ /** -+ * Get the current text token's length. Actions specified in the CookCC file -+ * can directly access the variable _yyLength. -+ * -+ * @return the string token length -+ */ -+ public int yyLength () -+ { -+ return _yyLength; -+ } -+ -+ /** -+ * Print the current string token to the standard output. -+ */ -+ public void echo () -+ { -+ System.out.print (yyText ()); -+ } -+ -+ /** -+ * Put all but n characters back to the input stream. Be aware that calling -+ * yyLess (0) is allowed, but be sure to change the state some how to avoid -+ * an endless loop. -+ * -+ * @param n -+ * The number of characters. -+ */ -+ protected void yyLess (int n) -+ { -+ if (n < 0) -+ throw new IllegalArgumentException ("yyLess function requires a non-zero value."); -+ if (n > (_yyMatchStart - _yyTextStart)) -+ throw new IndexOutOfBoundsException ("yyLess function called with a too large index value " + n + "."); -+ _yyMatchStart = _yyTextStart + n; -+ } -+ -+ /** -+ * Set the lexer's current state. -+ * -+ * @param baseState -+ * the base state index -+ */ -+ protected void begin (int baseState) -+ { -+ _yyBaseState = baseState; -+ } -+ -+ /** -+ * Push the current state onto lexer state onto stack and -+ * begin the new state specified by the user. -+ * -+ * @param newState -+ * the new state. -+ */ -+ protected void yyPushLexerState (int newState) -+ { -+ if (_yyLexerStack == null) -+ _yyLexerStack = new Stack (); -+ _yyLexerStack.push (new Integer (_yyBaseState)); -+ begin (newState); -+ } -+ -+ /** -+ * Restore the previous lexer state. -+ */ -+ protected void yyPopLexerState () -+ { -+ begin (((Integer)_yyLexerStack.pop ()).intValue ()); -+ } -+ -+ -+ // read more data from the input -+ protected boolean yyRefreshBuffer () throws IOException -+ { -+ if (_yyBuffer == null) -+ _yyBuffer = new byte[_yyBufferSize]; -+ if (_yyMatchStart > 0) -+ { -+ if (_yyBufferEnd > _yyMatchStart) -+ { -+ System.arraycopy (_yyBuffer, _yyMatchStart, _yyBuffer, 0, _yyBufferEnd - _yyMatchStart); -+ _yyBufferEnd -= _yyMatchStart; -+ _yyMatchStart = 0; -+ } -+ else -+ { -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ } -+ } -+ else if (_yyBufferEnd == _yyBuffer.length) -+ { -+ byte[] newBuffer = new byte[_yyBuffer.length + _yyBuffer.length / 2]; -+ System.arraycopy (_yyBuffer, 0, newBuffer, 0, _yyBufferEnd); -+ _yyBuffer = newBuffer; -+ } -+ -+ int readSize = _yyIs.read (_yyBuffer, _yyBufferEnd, _yyBuffer.length - _yyBufferEnd); -+ if (readSize > 0) -+ _yyBufferEnd += readSize; -+ else if (readSize < 0 && !yyWrap ()) // since we are at EOF, call yyWrap (). If the return value of yyWrap is false, refresh buffer again -+ return yyRefreshBuffer (); -+ return readSize >= 0; -+ } -+ -+ /** -+ * Reset the internal buffer. -+ */ -+ public void yyResetBuffer () -+ { -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ } -+ -+ /** -+ * Set the internal buffer size. This action can only be performed -+ * when the buffer is empty. Having a large buffer is useful to read -+ * a whole file in to increase the performance sometimes. -+ * -+ * @param bufferSize -+ * the new buffer size. -+ */ -+ public void setBufferSize (int bufferSize) -+ { -+ if (_yyBufferEnd > _yyMatchStart) -+ throw new IllegalArgumentException ("Cannot change lexer buffer size at this moment."); -+ _yyBufferSize = bufferSize; -+ _yyMatchStart = 0; -+ _yyBufferEnd = 0; -+ if (_yyBuffer != null && bufferSize != _yyBuffer.length) -+ _yyBuffer = new byte[bufferSize]; -+ } -+ -+ /** -+ * Call this function to start the scanning of the input. -+ * -+ * @return a token or status value. -+ * @throws IOException -+ * in case of I/O error. -+ */ -+ protected int yyLex () throws IOException -+ { -+ -+ char[] cc_ecs = cc_lexer.ecs; -+ char[] cc_next = cc_lexer.next; -+ char[] cc_check = cc_lexer.check; -+ char[] cc_base = cc_lexer.base; -+ char[] cc_default = cc_lexer.defaults; -+ char[] cc_meta = cc_lexer.meta; -+ char[] cc_accept = cc_lexer.accept; -+ -+ byte[] buffer = _yyBuffer; -+ -+ while (true) -+ { -+ // initiate variables necessary for lookup -+ int cc_matchedState = _yyBaseState; -+ -+ int matchedLength = 0; -+ -+ int internalBufferEnd = _yyBufferEnd; -+ int lookahead = _yyMatchStart; -+ -+ int cc_backupMatchedState = cc_matchedState; -+ int cc_backupMatchedLength = 0; -+ -+ // the DFA lookup -+ while (true) -+ { -+ // check buffer status -+ if (lookahead < internalBufferEnd) -+ { -+ // now okay to process the character -+ int cc_toState; -+ int symbol = cc_ecs[buffer[lookahead] & 0xff]; -+ cc_toState = cc_matchedState; -+ while (cc_check[symbol + cc_base[cc_toState]] != cc_toState) -+ { -+ cc_toState = cc_default[cc_toState]; -+ if (cc_toState >= 163) -+ symbol = cc_meta[symbol]; -+ } -+ cc_toState = cc_next[symbol + cc_base[cc_toState]]; -+ -+ if (cc_toState == 0) -+ { -+ cc_matchedState = cc_backupMatchedState; -+ matchedLength = cc_backupMatchedLength; -+ break; -+ } -+ -+ cc_matchedState = cc_toState; -+ ++lookahead; -+ ++matchedLength; -+ -+ if (cc_accept[cc_matchedState] > 0) -+ { -+ cc_backupMatchedState = cc_toState; -+ cc_backupMatchedLength = matchedLength; -+ } -+ } -+ else -+ { -+ int lookPos = lookahead - _yyMatchStart; -+ boolean refresh = yyRefreshBuffer (); -+ buffer = _yyBuffer; -+ internalBufferEnd = _yyBufferEnd; -+ lookahead = _yyMatchStart + lookPos; -+ if (! refresh) -+ { -+ // <> -+ int cc_toState; -+ int symbol = cc_ecs[256]; -+ cc_toState = cc_matchedState; -+ while (cc_check[symbol + cc_base[cc_toState]] != cc_toState) -+ { -+ cc_toState = cc_default[cc_toState]; -+ if (cc_toState >= 163) -+ symbol = cc_meta[symbol]; -+ } -+ cc_toState = cc_next[symbol + cc_base[cc_toState]]; -+ -+ if (cc_toState != 0) -+ cc_matchedState = cc_toState; -+ else -+ { -+ cc_matchedState = cc_backupMatchedState; -+ matchedLength = cc_backupMatchedLength; -+ } -+ break; -+ } -+ } -+ } -+ -+ _yyTextStart = _yyMatchStart; -+ _yyMatchStart += matchedLength; -+ _yyLength = matchedLength; -+ -+ -+ switch (cc_accept[cc_matchedState]) -+ { -+ case 1: // \{ -+ { -+ _yyValue = m_this.parseToken (); return OPEN_BRACE; -+ } -+ case 31: break; -+ case 2: // \} -+ { -+ _yyValue = m_this.parseToken (); return CLOSE_BRACE; -+ } -+ case 32: break; -+ case 3: // \[ -+ { -+ _yyValue = m_this.parseToken (); return OPEN_BRACKET; -+ } -+ case 33: break; -+ case 4: // \] -+ { -+ _yyValue = m_this.parseToken (); return CLOSE_BRACKET; -+ } -+ case 34: break; -+ case 5: // \( -+ { -+ _yyValue = m_this.parseToken (); return OPEN_PAREN; -+ } -+ case 35: break; -+ case 6: // \) -+ { -+ _yyValue = m_this.parseToken (); return CLOSE_PAREN; -+ } -+ case 36: break; -+ case 7: // , -+ { -+ _yyValue = m_this.parseToken (); return COMMA; -+ } -+ case 37: break; -+ case 8: // => -+ { -+ _yyValue = m_this.parseToken (); return ARROW; -+ } -+ case 38: break; -+ case 9: // true -+ { -+ _yyValue = m_this.parseToken (); return TRUE; -+ } -+ case 39: break; -+ case 10: // false -+ { -+ _yyValue = m_this.parseToken (); return FALSE; -+ } -+ case 40: break; -+ case 11: // big -+ { -+ _yyValue = m_this.parseToken (); return BIG; -+ } -+ case 41: break; -+ case 12: // bytes -+ { -+ _yyValue = m_this.parseToken (); return BYTES; -+ } -+ case 42: break; -+ case 13: // decimal -+ { -+ _yyValue = m_this.parseToken (); return DECIMAL; -+ } -+ case 43: break; -+ case 14: // integer -+ { -+ _yyValue = m_this.parseToken (); return INTEGER; -+ } -+ case 44: break; -+ case 15: // expression -+ { -+ _yyValue = m_this.parseToken (); return EXPRESSION; -+ } -+ case 45: break; -+ case 16: // undefined -+ { -+ _yyValue = m_this.parseToken (); return UNDEFINED; -+ } -+ case 46: break; -+ case 17: // [+-]?[0-9]+L -+ { -+ _yyValue = m_this.parsePlainValue (); return LONG_VAL; -+ } -+ case 47: break; -+ case 18: // [+-]?0x[0-9a-fA-F]+L -+ { -+ _yyValue = m_this.parsePlainValue (); return LONG_HEX_VAL; -+ } -+ case 48: break; -+ case 19: // [+-]?[0-9]+ -+ { -+ _yyValue = m_this.parsePlainValue (); return INT_VAL; -+ } -+ case 49: break; -+ case 20: // [+-]?0x[0-9a-fA-F]+ -+ { -+ _yyValue = m_this.parsePlainValue (); return INT_HEX_VAL; -+ } -+ case 50: break; -+ case 21: // [+-]?(NaN|Infinity) -+ { -+ _yyValue = m_this.parsePlainValue (); return DOUBLE_SPECIAL_VAL; -+ } -+ case 51: break; -+ case 22: // [+-]?([0-9]+\.[0-9]+([eE][+-]?[0-9]+)?) -+ { -+ _yyValue = m_this.parsePlainValue (); return DEC_VAL; -+ } -+ case 52: break; -+ case 23: // BIG_DECIMAL|BIG_INTEGER|BOOLEAN|BYTES|DOUBLE|EXPRESSION|INT|LIST|LONG|OBJECT|PROPERTY|STRING|TYPE|UNDEFINED -+ { -+ _yyValue = m_this.parsePlainValue (); return TYPE_VAL; -+ } -+ case 53: break; -+ case 24: // \"([^"\\]+|\\.)*\" -+ { -+ _yyValue = m_this.parseStringValue (); return STR_VAL; -+ } -+ case 54: break; -+ case 25: // [ \t\r\n]+ -+ { -+ m_this.ignored (); -+ } -+ case 55: break; -+ case 26: // . -+ { -+ m_this.invalid (); -+ } -+ case 56: break; -+ case 27: // <> -+ { -+ m_this.parseEOF (); return 0; -+ } -+ case 57: break; -+ case 28: // .|\n -+ { -+ echo (); // default character action -+ } -+ case 58: break; -+ case 29: // <> -+ { -+ return 0; // default EOF action -+ } -+ case 59: break; -+ default: -+ throw new IOException ("Internal error in Parser lexer."); -+ } -+ -+ } -+ } -+ -+ -+ /** -+ * Call this function to start parsing. -+ * -+ * @return 0 if everything is okay, or 1 if an error occurred. -+ * @throws IOException -+ * in case of error -+ */ -+ public int yyParse () throws IOException -+ { -+ char[] cc_ecs = cc_parser.ecs; -+ char[] cc_next = cc_parser.next; -+ char[] cc_check = cc_parser.check; -+ char[] cc_base = cc_parser.base; -+ char[] cc_default = cc_parser.defaults; -+ char[] cc_gotoDefault = cc_parser.gotoDefault; -+ char[] cc_rule = cc_parser.rule; -+ char[] cc_lhs = cc_parser.lhs; -+ -+ LinkedList cc_lookaheadStack = _yyLookaheadStack; -+ Vector cc_stateStack = _yyStateStack; -+ -+ if (cc_stateStack.size () == 0) -+ cc_stateStack.add (new YYParserState ()); -+ -+ int cc_toState = 0; -+ -+ for (;;) -+ { -+ YYParserState cc_lookahead; -+ -+ int cc_fromState; -+ char cc_ch; -+ -+ // -+ // check if there are any lookahead tokens on stack -+ // if not, then call yyLex () -+ // -+ if (cc_lookaheadStack.size () == 0) -+ { -+ _yyValue = null; -+ int val = yyLex (); -+ cc_lookahead = new YYParserState (val, _yyValue); -+ cc_lookaheadStack.add (cc_lookahead); -+ } -+ else -+ cc_lookahead = (YYParserState)cc_lookaheadStack.getLast (); -+ -+ cc_ch = cc_ecs[cc_lookahead.token]; -+ cc_fromState = ((YYParserState)cc_stateStack.get (cc_stateStack.size () - 1)).state; -+ int cc_symbol = cc_ch; -+ cc_toState = cc_fromState; -+ while (cc_check[cc_symbol + cc_base[cc_toState]] != cc_toState) -+ { -+ cc_toState = cc_default[cc_toState]; -+ if (cc_toState >= 57) -+ cc_symbol = 0; -+ } -+ cc_toState = (short)cc_next[cc_symbol + cc_base[cc_toState]]; -+ -+ -+ // -+ // check the value of toState and determine what to do -+ // with it -+ // -+ if (cc_toState > 0) -+ { -+ // shift -+ cc_lookahead.state = cc_toState; -+ cc_stateStack.add (cc_lookahead); -+ cc_lookaheadStack.removeLast (); -+ continue; -+ } -+ else if (cc_toState == 0) -+ { -+ // error -+ if (_yyInError) -+ { -+ // first check if the error is at the lookahead -+ if (cc_ch == 1) -+ { -+ // so we need to reduce the stack until a state with reduceable -+ // action is found -+ if (_yyStateStack.size () > 1) -+ _yyStateStack.setSize (_yyStateStack.size () - 1); -+ else -+ return 1; // can't do much we exit the parser -+ } -+ else -+ { -+ // this means that we need to dump the lookahead. -+ if (cc_ch == 0) // can't do much with EOF; -+ return 1; -+ cc_lookaheadStack.removeLast (); -+ } -+ continue; -+ } -+ else -+ { -+ if (yyParseError (cc_lookahead.token)) -+ return 1; -+ _yyLookaheadStack.add (new YYParserState (1, _yyValue)); -+ _yyInError = true; -+ continue; -+ } -+ } -+ _yyInError = false; -+ // now the reduce action -+ int cc_ruleState = -cc_toState; -+ -+ _yyArgStart = cc_stateStack.size () - cc_rule[cc_ruleState] - 1; -+ // -+ // find the state that said need this non-terminal -+ // -+ cc_fromState = ((YYParserState)cc_stateStack.get (_yyArgStart)).state; -+ -+ // -+ // find the state to goto after shifting the non-terminal -+ // onto the stack. -+ // -+ if (cc_ruleState == 1) -+ cc_toState = 0; // reset the parser -+ else -+ { -+ cc_toState = cc_fromState + 58; -+ int cc_tmpCh = cc_lhs[cc_ruleState] - 25; -+ while (cc_check[cc_tmpCh + cc_base[cc_toState]] != cc_toState) -+ cc_toState = cc_gotoDefault[cc_toState - 58]; -+ cc_toState = cc_next[cc_tmpCh + cc_base[cc_toState]]; -+ } -+ -+ _yyValue = null; -+ -+ switch (cc_ruleState) -+ { -+ case 1: // accept -+ return 0; -+ case 2: // complete : node -+ { -+ return m_this.parse ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 37: break; -+ case 3: // node : BIG DECIMAL DEC_VAL -+ { -+ _yyValue = m_this.parseBigDecimal ((java.lang.String)yyGetValue (3)); -+ } -+ case 38: break; -+ case 4: // node : BIG DECIMAL INT_VAL -+ { -+ _yyValue = m_this.parseBigDecimal ((java.lang.String)yyGetValue (3)); -+ } -+ case 39: break; -+ case 5: // node : BIG INTEGER INT_VAL -+ { -+ _yyValue = m_this.parseBigInteger ((java.lang.String)yyGetValue (3)); -+ } -+ case 40: break; -+ case 6: // node : TRUE -+ { -+ _yyValue = m_this.parseTrue (); -+ } -+ case 41: break; -+ case 7: // node : FALSE -+ { -+ _yyValue = m_this.parseFalse (); -+ } -+ case 42: break; -+ case 8: // node : bytes CLOSE_BRACE -+ { -+ _yyValue = m_this.finishBytes ((java.io.ByteArrayOutputStream)yyGetValue (1)); -+ } -+ case 43: break; -+ case 9: // node : bytes COMMA CLOSE_BRACE -+ { -+ _yyValue = m_this.finishBytes ((java.io.ByteArrayOutputStream)yyGetValue (1)); -+ } -+ case 44: break; -+ case 10: // node : BYTES OPEN_BRACE CLOSE_BRACE -+ { -+ _yyValue = m_this.emptyBytes (); -+ } -+ case 45: break; -+ case 11: // node : DEC_VAL -+ { -+ _yyValue = m_this.parseDouble ((java.lang.String)yyGetValue (1)); -+ } -+ case 46: break; -+ case 12: // node : EXPRESSION STR_VAL -+ { -+ _yyValue = m_this.parseExpression ((java.lang.String)yyGetValue (2)); -+ } -+ case 47: break; -+ case 13: // node : INT_VAL -+ { -+ _yyValue = m_this.parseInt ((java.lang.String)yyGetValue (1)); -+ } -+ case 48: break; -+ case 14: // node : INT_HEX_VAL -+ { -+ _yyValue = m_this.parseIntHex ((java.lang.String)yyGetValue (1)); -+ } -+ case 49: break; -+ case 15: // node : LONG_VAL -+ { -+ _yyValue = m_this.parseLong ((java.lang.String)yyGetValue (1)); -+ } -+ case 50: break; -+ case 16: // node : LONG_HEX_VAL -+ { -+ _yyValue = m_this.parseLongHex ((java.lang.String)yyGetValue (1)); -+ } -+ case 51: break; -+ case 17: // node : OPEN_BRACKET CLOSE_BRACKET -+ { -+ _yyValue = m_this.parseEmptyList (); -+ } -+ case 52: break; -+ case 18: // node : list CLOSE_BRACKET -+ { -+ _yyValue = m_this.finishList ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 53: break; -+ case 19: // node : list COMMA CLOSE_BRACKET -+ { -+ _yyValue = m_this.finishList ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 54: break; -+ case 20: // node : OPEN_BRACE CLOSE_BRACE -+ { -+ _yyValue = m_this.parseEmptyObject (); -+ } -+ case 55: break; -+ case 21: // node : object CLOSE_BRACE -+ { -+ _yyValue = m_this.finishObject ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 56: break; -+ case 22: // node : object COMMA CLOSE_BRACE -+ { -+ _yyValue = m_this.finishObject ((org.jboss.dmr.ModelNode)yyGetValue (1)); -+ } -+ case 57: break; -+ case 23: // node : OPEN_PAREN STR_VAL ARROW node CLOSE_PAREN -+ { -+ _yyValue = m_this.parseProperty ((java.lang.String)yyGetValue (2), (org.jboss.dmr.ModelNode)yyGetValue (4)); -+ } -+ case 58: break; -+ case 24: // node : STR_VAL -+ { -+ _yyValue = m_this.parseString ((java.lang.String)yyGetValue (1)); -+ } -+ case 59: break; -+ case 25: // node : TYPE_VAL -+ { -+ _yyValue = m_this.parseType ((java.lang.String)yyGetValue (1)); -+ } -+ case 60: break; -+ case 26: // node : UNDEFINED -+ { -+ _yyValue = m_this.parseUndefined (); -+ } -+ case 61: break; -+ case 27: // bytes : BYTES OPEN_BRACE INT_VAL -+ { -+ _yyValue = m_this.startBytesInt ((java.lang.String)yyGetValue (3)); -+ } -+ case 62: break; -+ case 28: // bytes : BYTES OPEN_BRACE INT_HEX_VAL -+ { -+ _yyValue = m_this.startBytesHex ((java.lang.String)yyGetValue (3)); -+ } -+ case 63: break; -+ case 29: // bytes : bytes COMMA INT_VAL -+ { -+ _yyValue = m_this.nextByteInt ((java.io.ByteArrayOutputStream)yyGetValue (1), (java.lang.String)yyGetValue (3)); -+ } -+ case 64: break; -+ case 30: // bytes : bytes COMMA INT_HEX_VAL -+ { -+ _yyValue = m_this.nextByteHex ((java.io.ByteArrayOutputStream)yyGetValue (1), (java.lang.String)yyGetValue (3)); -+ } -+ case 65: break; -+ case 31: // list : OPEN_BRACKET node -+ { -+ _yyValue = m_this.parseStartList ((org.jboss.dmr.ModelNode)yyGetValue (2)); -+ } -+ case 66: break; -+ case 32: // list : list COMMA node -+ { -+ _yyValue = m_this.parseListItem ((org.jboss.dmr.ModelNode)yyGetValue (1), (org.jboss.dmr.ModelNode)yyGetValue (3)); -+ } -+ case 67: break; -+ case 33: // object : OPEN_BRACE STR_VAL ARROW node -+ { -+ _yyValue = m_this.parseStartObject ((java.lang.String)yyGetValue (2), (org.jboss.dmr.ModelNode)yyGetValue (4)); -+ } -+ case 68: break; -+ case 34: // object : object COMMA STR_VAL ARROW node -+ { -+ _yyValue = m_this.parseObjectItem ((org.jboss.dmr.ModelNode)yyGetValue (1), (java.lang.String)yyGetValue (3), (org.jboss.dmr.ModelNode)yyGetValue (5)); -+ } -+ case 69: break; -+ default: -+ throw new IOException ("Internal error in Parser parser."); -+ } -+ -+ YYParserState cc_reduced = new YYParserState (-cc_ruleState, _yyValue, cc_toState); -+ _yyValue = null; -+ cc_stateStack.setSize (_yyArgStart + 1); -+ cc_stateStack.add (cc_reduced); -+ } -+ } -+ -+ /** -+ * This function is used by the error handling grammars to check the immediate -+ * lookahead token on the stack. -+ * -+ * @return the top of lookahead stack. -+ */ -+ protected YYParserState yyPeekLookahead () -+ { -+ return (YYParserState)_yyLookaheadStack.getLast (); -+ } -+ -+ /** -+ * This function is used by the error handling grammars to pop an unwantted -+ * token from the lookahead stack. -+ */ -+ protected void yyPopLookahead () -+ { -+ _yyLookaheadStack.removeLast (); -+ } -+ -+ /** -+ * Clear the error flag. If this flag is present and the parser again sees -+ * another error transition, it would immediately calls yyParseError, which -+ * would by default exit the parser. -+ *

-+ * This function is used in error recovery. -+ */ -+ protected void yyClearError () -+ { -+ _yyInError = false; -+ } -+ -+ /** -+ * This function reports error and return true if critical error occurred, or -+ * false if the error has been successfully recovered. IOException is an optional -+ * choice of reporting error. -+ * -+ * @param terminal -+ * the terminal that caused the error. -+ * @return true if irrecoverable error occurred. Or simply throw an IOException. -+ * false if the parsing can be continued to check for specific -+ * error tokens. -+ * @throws IOException -+ * in case of error. -+ */ -+ protected boolean yyParseError (int terminal) throws IOException -+ { -+ return false; -+ } -+ -+ /** -+ * Gets the object value associated with the symbol at the argument's position. -+ * -+ * @param arg -+ * the symbol position starting from 1. -+ * @return the object value associated with symbol. -+ */ -+ protected Object yyGetValue (int arg) -+ { -+ return ((YYParserState)_yyStateStack.get (_yyArgStart + arg)).value; -+ } -+ -+ /** -+ * Set the object value for the current non-terminal being reduced. -+ * -+ * @param value -+ * the object value for the current non-terminal. -+ */ -+ protected void yySetValue (Object value) -+ { -+ _yyValue = value; -+ } -+ -+ -+ -+ -+ private final org.jboss.dmr.ModelNodeParser m_this = (org.jboss.dmr.ModelNodeParser)this; -+ -+ /** -+ * This function is used to change the initial state for the lexer. -+ * -+ * @param state -+ * the name of the state -+ */ -+ protected void begin (String state) -+ { -+ if ("INITIAL".equals (state)) -+ { -+ begin (INITIAL); -+ return; -+ } -+ throw new IllegalArgumentException ("Unknown lexer state: " + state); -+ } -+ -+ /** -+ * Push the current state onto lexer state onto stack and -+ * begin the new state specified by the user. -+ * -+ * @param state -+ * the new state. -+ */ -+ protected void yyPushLexerState (String state) -+ { -+ if ("INITIAL".equals (state)) -+ { -+ yyPushLexerState (INITIAL); -+ return; -+ } -+ throw new IllegalArgumentException ("Unknown lexer state: " + state); -+ } -+ -+ /** -+ * Check if there are more inputs. This function is called when EOF is -+ * encountered. -+ * -+ * @return true to indicate no more inputs. -+ * @throws IOException -+ * in case of an IO error -+ */ -+ protected boolean yyWrap () throws IOException -+ { -+ return true; -+ } -+ -+ -+/* -+ * lexer properties: -+ * unicode = false -+ * bol = false -+ * backup = true -+ * cases = 29 -+ * table = compressed -+ * ecs = 59 -+ * states = 163 -+ * max symbol value = 256 -+ * -+ * memory usage: -+ * full table = 41891 -+ * ecs table = 9874 -+ * next = 268 -+ * check = 268 -+ * default = 165 -+ * meta = 59 -+ * compressed table = 1017 -+ * -+ * parser properties: -+ * symbols = 31 -+ * max terminal = 279 -+ * used terminals = 25 -+ * non-terminals = 6 -+ * rules = 34 -+ * shift/reduce conflicts = 0 -+ * reduct/reduce conflicts = 0 -+ * -+ * memory usage: -+ * ecs table = 2047 -+ * compressed table = 1028 -+ */ -+} --- -2.5.5 - diff --git a/1.3.0.Final.tar.gz b/1.3.0.Final.tar.gz deleted file mode 100644 index 64d375143510d51f1e4df5060efe248e3db0bf73..0000000000000000000000000000000000000000 Binary files a/1.3.0.Final.tar.gz and /dev/null differ diff --git a/1.5.1.Final.tar.gz b/1.5.1.Final.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d0d6e5b2d22537de78a6751de48b0aaf24135bb9 Binary files /dev/null and b/1.5.1.Final.tar.gz differ diff --git a/jboss-dmr.spec b/jboss-dmr.spec index 38f0ecae4586ffcf47f191ef92457c37125b76ce..95843490ee1c5729248979b45537b14370da3fce 100644 --- a/jboss-dmr.spec +++ b/jboss-dmr.spec @@ -1,15 +1,14 @@ %global namedreltag .Final %global namedversion %{version}%{?namedreltag} Name: jboss-dmr -Version: 1.3.0 +Version: 1.5.1 Release: 1 Summary: JBoss DMR -License: LGPLv2+ +License: LGPLv2+ and Apache-2.0 URL: https://github.com/jbossas/jboss-dmr Source0: https://github.com/jbossas/jboss-dmr/archive/%{namedversion}.tar.gz -Patch0: 0001-Add-pre-generated-Java-classes.patch BuildArch: noarch -BuildRequires: maven-local mvn(com.google.code.cookcc:cookcc) mvn(jdepend:jdepend) +BuildRequires: maven-local mvn(jdepend:jdepend) BuildRequires: mvn(junit:junit) mvn(org.jboss.apiviz:apiviz:pom:) BuildRequires: mvn(org.jboss:jboss-parent:pom:) mvn(org.jboss.logmanager:jboss-logmanager) %description @@ -21,10 +20,8 @@ Summary: Javadoc for %{name} This package contains the API documentation for %{name}. %prep -%setup -q -n %{name}-%{namedversion} -%patch0 -p1 -%pom_remove_plugin :apt-maven-plugin -%pom_remove_plugin :maven-antrun-plugin +%autosetup -n %{name}-%{namedversion} -p1 +%pom_remove_plugin :maven-checkstyle-plugin %build %mvn_build @@ -37,5 +34,8 @@ This package contains the API documentation for %{name}. %files javadoc -f .mfiles-javadoc %changelog +* Tue Jan 26 2021 huanghaitao - 1.5.1-1 +- Update to 1.5.1 + * Fri Aug 14 2020 yaokai - 1.3.0-1 - Package init