javacc-7.0.1.test.javacodeLA.out-dir.JavacodeTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javacc Show documentation
Show all versions of javacc Show documentation
JavaCC is a parser/scanner generator for Java.
/* JavacodeTest.java */
/* Generated By:JavaCC: Do not edit this line. JavacodeTest.java */
/**
* A test to verify the interaction between JAVACODE
* productions and lookajead.
**/
public class JavacodeTest implements JavacodeTestConstants {
public static void main(String args[]) throws Exception {
JavacodeTest t = new JavacodeTest(System.in);
System.out.print("Answer is: ");
try {
switch (args[0].charAt(0)) {
case 'j': Javacode(); break;
case 'n': NoJavacode(); break;
case 'i': IndirectJavacode(); break;
case 'I': IndirectJavacode2(); break;
case 'N': JavacodeNoLa(); break;
}
} catch (Exception e) {
System.out.println("Oops.");
System.out.println(e.getMessage());
throw(e);
}
System.out.println(".");
}
public static boolean isC() {
return getToken(1).image.equals("C");
}
static final public void Javacode() throws ParseException {
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:
case C:
case D:{
;
break;
}
default:
jj_la1[0] = jj_gen;
break label_1;
}
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:{
A();
break;
}
default:
jj_la1[1] = jj_gen;
if (jj_2_1(2147483647)) {
javacode_method();
} else {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case D:{
D();
break;
}
default:
jj_la1[2] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
jj_consume_token(0);
}
static final public void JavacodeNoLa() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:{
A();
break;
}
default:
jj_la1[3] = jj_gen;
javacode_method();
}
jj_consume_token(0);
}
/*
* Similar non-javacode constructs are allowed. This checks a pointless
* (but legal) case.
*/
static final public void NoJavacode() throws ParseException {
label_2:
while (true) {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:
case B:
case D:{
;
break;
}
default:
jj_la1[4] = jj_gen;
break label_2;
}
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:{
A();
break;
}
default:
jj_la1[5] = jj_gen;
if (jj_2_2(2147483647)) {
B();
} else {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case D:{
D();
break;
}
default:
jj_la1[6] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
jj_consume_token(0);
}
/*
* For sematic lookahead, the LA executes as expected (only
* succeeds if both the semantic and normal LA succeeds).
*/
static final public
void Semantic() throws ParseException {
label_3:
while (true) {
if (jj_2_3(1)) {
;
} else {
break label_3;
}
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:{
A();
break;
}
default:
jj_la1[7] = jj_gen;
if (isC()) {
B();
} else {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case D:{
D();
break;
}
default:
jj_la1[8] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
}
jj_consume_token(0);
}
static final public void IndirectJavacode() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:{
A();
break;
}
default:
jj_la1[9] = jj_gen;
Ind();
}
jj_consume_token(0);
}
static final public void IndirectJavacode2() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case A:{
A();
break;
}
default:
jj_la1[10] = jj_gen;
if (jj_2_4(2147483647)) {
Ind();
} else {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case B:{
B();
break;
}
default:
jj_la1[11] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
}
jj_consume_token(0);
}
static final public void Ind() throws ParseException {
javacode_method();
}
static final public void A() throws ParseException {
jj_consume_token(A);
System.out.print("A");
}
static final public void B() throws ParseException {
jj_consume_token(B);
System.out.print("B");
}
static final public void C() throws ParseException {
jj_consume_token(C);
System.out.print("C");
}
static final public void D() throws ParseException {
jj_consume_token(D);
System.out.print("D");
}
static void javacode_method() throws ParseException {Token t = getNextToken();
System.out.print("javacode " + t.image);
}
static private boolean jj_2_1(int xla)
{
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return (!jj_3_1()); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(0, xla); }
}
static private boolean jj_2_2(int xla)
{
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return (!jj_3_2()); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(1, xla); }
}
static private boolean jj_2_3(int xla)
{
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return (!jj_3_3()); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(2, xla); }
}
static private boolean jj_2_4(int xla)
{
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return (!jj_3_4()); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(3, xla); }
}
static private boolean jj_3R_8()
{
if (jj_scan_token(B)) return true;
return false;
}
static private boolean jj_3_3()
{
Token xsp;
xsp = jj_scanpos;
if (jj_3R_4()) {
jj_scanpos = xsp;
jj_lookingAhead = true;
jj_semLA = isC();
jj_lookingAhead = false;
if (!jj_semLA || jj_3R_5()) {
jj_scanpos = xsp;
if (jj_3R_6()) return true;
}
}
return false;
}
static private boolean jj_3R_4()
{
if (jj_3R_7()) return true;
return false;
}
static private boolean jj_3R_7()
{
if (jj_scan_token(A)) return true;
return false;
}
static private boolean jj_3_1()
{
if (jj_scan_token(C)) return true;
return false;
}
static private boolean jj_3R_9()
{
if (jj_scan_token(D)) return true;
return false;
}
static private boolean jj_3R_6()
{
if (jj_3R_9()) return true;
return false;
}
static private boolean jj_3_2()
{
if (jj_scan_token(C)) return true;
return false;
}
static private boolean jj_3R_5()
{
if (jj_3R_8()) return true;
return false;
}
static private boolean jj_3_4()
{
if (jj_scan_token(5)) return true;
return false;
}
static private boolean jj_initialized_once = false;
/** Generated Token Manager. */
static public JavacodeTestTokenManager token_source;
static SimpleCharStream jj_input_stream;
/** Current token. */
static public Token token;
/** Next token. */
static public Token jj_nt;
static private int jj_ntk;
static private Token jj_scanpos, jj_lastpos;
static private int jj_la;
/** Whether we are looking ahead. */
static private boolean jj_lookingAhead = false;
static private boolean jj_semLA;
static private int jj_gen;
static final private int[] jj_la1 = new int[12];
static private int[] jj_la1_0;
static {
jj_la1_init_0();
}
private static void jj_la1_init_0() {
jj_la1_0 = new int[] {0x1a,0x2,0x10,0x2,0x16,0x2,0x10,0x2,0x10,0x2,0x2,0x4,};
}
static final private JJCalls[] jj_2_rtns = new JJCalls[4];
static private boolean jj_rescan = false;
static private int jj_gc = 0;
/** Constructor with InputStream. */
public JavacodeTest(java.io.InputStream stream) {
this(stream, null);
}
/** Constructor with InputStream and supplied encoding */
public JavacodeTest(java.io.InputStream stream, String encoding) {
if (jj_initialized_once) {
System.out.println("ERROR: Second call to constructor of static parser. ");
System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false");
System.out.println(" during parser generation.");
throw new Error();
}
jj_initialized_once = true;
try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source = new JavacodeTestTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 12; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
static public void ReInit(java.io.InputStream stream) {
ReInit(stream, null);
}
/** Reinitialise. */
static public void ReInit(java.io.InputStream stream, String encoding) {
try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 12; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Constructor. */
public JavacodeTest(java.io.Reader stream) {
if (jj_initialized_once) {
System.out.println("ERROR: Second call to constructor of static parser. ");
System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false");
System.out.println(" during parser generation.");
throw new Error();
}
jj_initialized_once = true;
jj_input_stream = new SimpleCharStream(stream, 1, 1);
token_source = new JavacodeTestTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 12; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
static public void ReInit(java.io.Reader stream) {
if (jj_input_stream == null) {
jj_input_stream = new SimpleCharStream(stream, 1, 1);
} else {
jj_input_stream.ReInit(stream, 1, 1);
}
if (token_source == null) {
token_source = new JavacodeTestTokenManager(jj_input_stream);
}
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 12; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Constructor with generated Token Manager. */
public JavacodeTest(JavacodeTestTokenManager tm) {
if (jj_initialized_once) {
System.out.println("ERROR: Second call to constructor of static parser. ");
System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false");
System.out.println(" during parser generation.");
throw new Error();
}
jj_initialized_once = true;
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 12; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(JavacodeTestTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 12; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
static private Token jj_consume_token(int kind) throws ParseException {
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
if (token.kind == kind) {
jj_gen++;
if (++jj_gc > 100) {
jj_gc = 0;
for (int i = 0; i < jj_2_rtns.length; i++) {
JJCalls c = jj_2_rtns[i];
while (c != null) {
if (c.gen < jj_gen) c.first = null;
c = c.next;
}
}
}
return token;
}
token = oldToken;
jj_kind = kind;
throw generateParseException();
}
@SuppressWarnings("serial")
static private final class LookaheadSuccess extends java.lang.Error { }
static final private LookaheadSuccess jj_ls = new LookaheadSuccess();
static private boolean jj_scan_token(int kind) {
if (jj_scanpos == jj_lastpos) {
jj_la--;
if (jj_scanpos.next == null) {
jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
} else {
jj_lastpos = jj_scanpos = jj_scanpos.next;
}
} else {
jj_scanpos = jj_scanpos.next;
}
if (jj_rescan) {
int i = 0; Token tok = token;
while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
if (tok != null) jj_add_error_token(kind, i);
}
if (jj_scanpos.kind != kind) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
return false;
}
/** Get the next Token. */
static final public Token getNextToken() {
if (token.next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
jj_gen++;
return token;
}
/** Get the specific Token. */
static final public Token getToken(int index) {
Token t = jj_lookingAhead ? jj_scanpos : token;
for (int i = 0; i < index; i++) {
if (t.next != null) t = t.next;
else t = t.next = token_source.getNextToken();
}
return t;
}
static private int jj_ntk_f() {
if ((jj_nt=token.next) == null)
return (jj_ntk = (token.next=token_source.getNextToken()).kind);
else
return (jj_ntk = jj_nt.kind);
}
static private java.util.List jj_expentries = new java.util.ArrayList();
static private int[] jj_expentry;
static private int jj_kind = -1;
static private int[] jj_lasttokens = new int[100];
static private int jj_endpos;
static private void jj_add_error_token(int kind, int pos) {
if (pos >= 100) {
return;
}
if (pos == jj_endpos + 1) {
jj_lasttokens[jj_endpos++] = kind;
} else if (jj_endpos != 0) {
jj_expentry = new int[jj_endpos];
for (int i = 0; i < jj_endpos; i++) {
jj_expentry[i] = jj_lasttokens[i];
}
for (int[] oldentry : jj_expentries) {
if (oldentry.length == jj_expentry.length) {
boolean isMatched = true;
for (int i = 0; i < jj_expentry.length; i++) {
if (oldentry[i] != jj_expentry[i]) {
isMatched = false;
break;
}
}
if (isMatched) {
jj_expentries.add(jj_expentry);
break;
}
}
}
if (pos != 0) {
jj_lasttokens[(jj_endpos = pos) - 1] = kind;
}
}
}
/** Generate ParseException. */
static public ParseException generateParseException() {
jj_expentries.clear();
boolean[] la1tokens = new boolean[6];
if (jj_kind >= 0) {
la1tokens[jj_kind] = true;
jj_kind = -1;
}
for (int i = 0; i < 12; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1< jj_gen) {
jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
switch (i) {
case 0: jj_3_1(); break;
case 1: jj_3_2(); break;
case 2: jj_3_3(); break;
case 3: jj_3_4(); break;
}
}
p = p.next;
} while (p != null);
} catch(LookaheadSuccess ls) { }
}
jj_rescan = false;
}
static private void jj_save(int index, int xla) {
JJCalls p = jj_2_rtns[index];
while (p.gen > jj_gen) {
if (p.next == null) { p = p.next = new JJCalls(); break; }
p = p.next;
}
p.gen = jj_gen + xla - jj_la;
p.first = token;
p.arg = xla;
}
static final class JJCalls {
int gen;
Token first;
int arg;
JJCalls next;
}
}