diff --git a/examples/jse/SampleParser.java b/examples/jse/SampleParser.java index c1ba8c10..77b1d7d3 100644 --- a/examples/jse/SampleParser.java +++ b/examples/jse/SampleParser.java @@ -5,13 +5,15 @@ */ import java.io.*; -import org.luaj.vm2.*; +import org.luaj.vm2.LuaValue; import org.luaj.vm2.ast.*; +import org.luaj.vm2.ast.Exp.AnonFuncDef; +import org.luaj.vm2.ast.Stat.FuncDef; +import org.luaj.vm2.ast.Stat.LocalFuncDef; import org.luaj.vm2.parser.*; public class SampleParser { - static LuaValue NIL = LuaValue.NIL; // Workaround needed to ensure classes load in right order. // Sample ParseException subclass that stores the file, line, and column info. static public class FileLineColumnParseException extends ParseException { @@ -51,9 +53,29 @@ public class SampleParser { // Perform the parsing. Chunk chunk = parser.Chunk(); - // Optionally recurse over the parse tree with a custom Visitor instance. + // Print out line info for all function definitions. chunk.accept( new Visitor() { - // TODO: override Visitor methods here to perform actions on the parse tree. + public void visit(AnonFuncDef exp) { + System.out.println("Anonymous function definition at " + + exp.beginLine + "." + exp.beginColumn + "," + + exp.endLine + "." + exp.endColumn); + } + + public void visit(FuncDef stat) { + System.out.println("Function definition '" + stat.name.name.name + "' at " + + stat.beginLine + "." + stat.beginColumn + "," + + stat.endLine + "." + stat.endColumn); + + System.out.println("\tName location " + + stat.name.beginLine + "." + stat.name.beginColumn + "," + + stat.name.endLine + "." + stat.name.endColumn); + } + + public void visit(LocalFuncDef stat) { + System.out.println("Local function definition '" + stat.name.name + "' at " + + stat.beginLine + "." + stat.beginColumn + "," + + stat.endLine + "." + stat.endColumn); + } } ); } catch ( FileLineColumnParseException e ) { diff --git a/grammar/LuaParser.jj b/grammar/LuaParser.jj index 0f710ab6..2d3e8a95 100644 --- a/grammar/LuaParser.jj +++ b/grammar/LuaParser.jj @@ -42,6 +42,9 @@ import org.luaj.vm2.ast.*; import java.util.*; public class LuaParser { + static { + LuaValue.valueOf(true); + } public static void main(String args[]) throws ParseException { LuaParser parser = new LuaParser(System.in); @@ -59,6 +62,29 @@ public class LuaParser { throw new ParseException("expected function call"); return (Exp.FuncCall) pe; } + + public SimpleCharStream getCharStream() { + return jj_input_stream; + } + + private long LineInfo() { + return ((long) jj_input_stream.getBeginLine() << 32) | jj_input_stream.getBeginColumn(); + } + + private void L(SyntaxElement e, long startinfo) { + e.beginLine = (int) (startinfo >> 32); + e.beginColumn = (short) startinfo; + e.endLine = token.endLine; + e.endColumn = (short) token.endColumn; + } + + private void L(SyntaxElement e, Token starttoken) { + e.beginLine = starttoken.beginLine; + e.beginColumn = (short) starttoken.beginColumn; + e.endLine = token.endLine; + e.endColumn = (short) token.endColumn; + } + } PARSER_END(LuaParser) @@ -166,18 +192,21 @@ TOKEN : Chunk Chunk(): { Block b; + Chunk c; + long i = LineInfo(); } { - ( "#" { token_source.SwitchTo(IN_COMMENT); } )? b=Block() { return new Chunk(b); } + ( "#" { token_source.SwitchTo(IN_COMMENT); } )? b=Block() { c=new Chunk(b); L(c,i); return c; } } Block Block(): { Block b = new Block(); Stat s; + long i = LineInfo(); } { - (s=Stat() {b.add(s);} )* (s=ReturnStat() {b.add(s);} )? { return b; } + (s=Stat() {b.add(s);} )* (s=ReturnStat() {b.add(s);} )? { L(b,i); return b; } } Stat Stat(): @@ -190,22 +219,23 @@ Stat Stat(): Token n; List nl; List el=null; + long i = LineInfo(); } { ";" { return null; } -| s=Label() { return s; } -| { return Stat.breakstat(); } -| n= { return Stat.gotostat(n.image); } -| b=Block() { return Stat.block(b); } -| e=Exp() b=Block() { return Stat.whiledo(e,b); } -| b=Block() e=Exp() { return Stat.repeatuntil(b,e); } -| s=IfThenElse() { return s; } -| LOOKAHEAD(3) n= "=" e=Exp() "," e2=Exp() ( "," e3=Exp() )? b=Block() { return Stat.fornumeric(n.image,e,e2,e3,b); } -| nl=NameList() el=ExpList() b=Block() { return Stat.forgeneric(nl,el,b); } -| fn=FuncName() fb=FuncBody() { return Stat.functiondef(fn,fb); } -| LOOKAHEAD(2) n= fb=FuncBody() { return Stat.localfunctiondef(n.image,fb); } -| nl=NameList() ( "=" el=ExpList() )? { return Stat.localassignment(nl,el); } -| s=ExprStat() { return s; } +| s=Label() { L(s,i); return s; } +| { s=Stat.breakstat(); L(s,i); return s; } +| n= { s=Stat.gotostat(n.image); L(s,i); return s; } +| b=Block() { s=Stat.block(b); L(s,i); return s; } +| e=Exp() b=Block() { s=Stat.whiledo(e,b); L(s,i); return s; } +| b=Block() e=Exp() { s=Stat.repeatuntil(b,e); L(s,i); return s; } +| s=IfThenElse() { L(s,i); return s; } +| LOOKAHEAD(3) n= "=" e=Exp() "," e2=Exp() ( "," e3=Exp() )? b=Block() { s=Stat.fornumeric(n.image,e,e2,e3,b); L(s,i); return s; } +| nl=NameList() el=ExpList() b=Block() { s=Stat.forgeneric(nl,el,b); L(s,i); return s; } +| fn=FuncName() fb=FuncBody() { s=Stat.functiondef(fn,fb); L(s,i); return s; } +| LOOKAHEAD(2) n= fb=FuncBody() { s=Stat.localfunctiondef(n.image,fb); L(s,i); return s; } +| nl=NameList() ( "=" el=ExpList() )? { s=Stat.localassignment(nl,el); L(s,i); return s; } +| s=ExprStat() { L(s,i); return s; } } Stat IfThenElse(): @@ -231,9 +261,11 @@ Stat IfThenElse(): Stat ReturnStat(): { List el=null; + Stat s; + long i = LineInfo(); } { - ( el=ExpList() )? ( ";" )? { return Stat.returnstat(el); } + ( el=ExpList() )? ( ";" )? { s=Stat.returnstat(el); L(s,i); return s; } } Stat Label(): @@ -246,12 +278,13 @@ Stat Label(): Stat ExprStat(): { - Exp.PrimaryExp pe; - Stat as=null; + Exp.PrimaryExp p; + Stat s=null; + long i = LineInfo(); } { - pe=PrimaryExp() ( as=Assign(assertvarexp(pe)) )? - { return as==null? Stat.functioncall(assertfunccall(pe)): as; } + p=PrimaryExp() ( s=Assign(assertvarexp(p)) )? + { if (s==null) { s=Stat.functioncall(assertfunccall(p)); } L(s,i); return s; } } Stat Assign(Exp.VarExp v0): @@ -260,47 +293,52 @@ Stat Assign(Exp.VarExp v0): vl.add(v0); Exp.VarExp ve; List el; + Stat s; + long i = LineInfo(); } { - ( "," ve=VarExp() { vl.add(ve); } )* "=" el=ExpList() { return Stat.assignment(vl,el); } + ( "," ve=VarExp() { vl.add(ve); } )* "=" el=ExpList() { s=Stat.assignment(vl,el); L(s,i); return s; } } Exp.VarExp VarExp(): { - Exp.PrimaryExp pe; + Exp.PrimaryExp p; } { - pe=PrimaryExp() { return assertvarexp(pe); } + p=PrimaryExp() { return assertvarexp(p); } } FuncName FuncName(): { - FuncName fn; Token n; + FuncName f; } { - n= {fn=new FuncName(n.image);} - ( "." n= {fn.adddot(n.image);} )* - ( ":" n= {fn.method=n.image;} )? - {return fn;} + n= {f=new FuncName(n.image);} + ( "." n= {f.adddot(n.image);} )* + ( ":" n= {f.method=n.image;} )? + {L(f,n); return f;} } Exp.PrimaryExp PrefixExp(): { Token n; Exp e; + Exp.PrimaryExp p; + long i = LineInfo(); } { - n= { return Exp.nameprefix(n.image); } -| "(" e=Exp() ")" { return Exp.parensprefix(e); } + n= { p=Exp.nameprefix(n.image); L(p,i); return p; } +| "(" e=Exp() ")" { p=Exp.parensprefix(e); L(p,i); return p; } } Exp.PrimaryExp PrimaryExp(): { - Exp.PrimaryExp pe; + Exp.PrimaryExp p; + long i = LineInfo(); } { - pe=PrefixExp() ( LOOKAHEAD(2) pe=PostfixOp(pe) )* { return pe; } + p=PrefixExp() ( LOOKAHEAD(2) p=PostfixOp(p) )* { L(p,i); return p; } } Exp.PrimaryExp PostfixOp(Exp.PrimaryExp lhs): @@ -308,12 +346,14 @@ Exp.PrimaryExp PostfixOp(Exp.PrimaryExp lhs): Token n; Exp e; FuncArgs a; + Exp.PrimaryExp p; + long i = LineInfo(); } { - "." n= { return Exp.fieldop(lhs, n.image); } -| "[" e=Exp() "]" { return Exp.indexop(lhs, e); } -| ":" n= a=FuncArgs() { return Exp.methodop(lhs, n.image,a); } -| a=FuncArgs() { return Exp.functionop(lhs, a); } + "." n= { p=Exp.fieldop(lhs, n.image); L(p,i); return p; } +| "[" e=Exp() "]" { p=Exp.indexop(lhs, e); L(p,i); return p; } +| ":" n= a=FuncArgs() { p=Exp.methodop(lhs, n.image,a); L(p,i); return p; } +| a=FuncArgs() { p=Exp.functionop(lhs, a); L(p,i); return p; } } FuncArgs FuncArgs(): @@ -321,29 +361,31 @@ FuncArgs FuncArgs(): List el=null; TableConstructor tc; LuaString s; + FuncArgs a; + long i = LineInfo(); } { - "(" ( el=ExpList() )? ")" { return FuncArgs.explist(el); } -| tc=TableConstructor() { return FuncArgs.tableconstructor(tc); } -| s=Str() { return FuncArgs.string(s); } + "(" ( el=ExpList() )? ")" { a=FuncArgs.explist(el); L(a,i); return a; } +| tc=TableConstructor() { a=FuncArgs.tableconstructor(tc); L(a,i); return a; } +| s=Str() { a=FuncArgs.string(s); L(a,i); return a; } } List NameList(): { - List nl = new ArrayList(); + List l = new ArrayList(); Token name; } { - name= {nl.add(new Name(name.image));} ( LOOKAHEAD(2) "," name= {nl.add(new Name(name.image));} )* {return nl;} + name= {l.add(new Name(name.image));} ( LOOKAHEAD(2) "," name= {l.add(new Name(name.image));} )* {return l;} } List ExpList(): { - List el = new ArrayList(); + List l = new ArrayList(); Exp e; } { - e=Exp() {el.add(e);} ( "," e=Exp() {el.add(e);} )* {return el;} + e=Exp() {l.add(e);} ( "," e=Exp() {l.add(e);} )* {return l;} } Exp SimpleExp(): @@ -351,18 +393,19 @@ Exp SimpleExp(): Token n; LuaString s; Exp e; - TableConstructor tc; - FuncBody fb; + TableConstructor c; + FuncBody b; + long i = LineInfo(); } { - { return Exp.constant(LuaValue.NIL); } -| { return Exp.constant(LuaValue.TRUE); } -| { return Exp.constant(LuaValue.FALSE); } -| n= { return Exp.numberconstant(n.image); } -| s=Str() { return Exp.constant(s); } -| "..." { return Exp.varargs(); } -| tc=TableConstructor() { return Exp.tableconstructor(tc); } -| fb=FunctionCall() { return Exp.anonymousfunction(fb); } + { e=Exp.constant(LuaValue.NIL); L(e,i); return e; } +| { e=Exp.constant(LuaValue.TRUE); L(e,i); return e; } +| { e=Exp.constant(LuaValue.FALSE); L(e,i); return e; } +| n= { e=Exp.numberconstant(n.image); L(e,i); return e; } +| s=Str() { e=Exp.constant(s); L(e,i); return e; } +| "..." { e=Exp.varargs(); L(e,i); return e; } +| c=TableConstructor() { e=Exp.tableconstructor(c); L(e,i); return e; } +| b=FunctionCall() { e=Exp.anonymousfunction(b); L(e,i); return e; } | e=PrimaryExp() { return e; } } @@ -382,66 +425,75 @@ Exp Exp(): { Exp e,s; int op; + long i = LineInfo(); } { ( e=SimpleExp() | op=Unop() s=Exp() {e=Exp.unaryexp(op,s);}) - (LOOKAHEAD(2) op=Binop() s=Exp() {e=Exp.binaryexp(e,op,s);} )* { return e; } + (LOOKAHEAD(2) op=Binop() s=Exp() {e=Exp.binaryexp(e,op,s);} )* { L(e,i); return e; } } FuncBody FunctionCall(): { - FuncBody fb; + FuncBody b; + long i = LineInfo(); } { - fb=FuncBody() { return fb; } + b=FuncBody() { L(b,i); return b; } } FuncBody FuncBody(): { ParList pl=null; Block b; + FuncBody f; + long i = LineInfo(); } { - "(" ( pl=ParList() )? ")" b=Block() { return new FuncBody(pl,b); } + "(" ( pl=ParList() )? ")" b=Block() { f=new FuncBody(pl,b); L(f,i); return f; } } ParList ParList(): { - List nl=null; + List l=null; boolean v=false; + ParList p; + long i = LineInfo(); } { - nl=NameList() ( "," "..." { v=true; } )? { return new ParList(nl,v); } -| "..." { return new ParList(null,true); ; } + l=NameList() ( "," "..." { v=true; } )? { p=new ParList(l,v); L(p,i); return p; } +| "..." { p=new ParList(null,true); L(p,i); return p; } } TableConstructor TableConstructor(): { - TableConstructor tc = new TableConstructor(); - List fl = null; + TableConstructor c = new TableConstructor(); + List l = null; + long i = LineInfo(); } { - "{" ( fl=FieldList() {tc.fields=fl;} )? "}" { return tc; } + "{" ( l=FieldList() {c.fields=l;} )? "}" { L(c,i); return c; } } List FieldList(): { - List fl = new ArrayList(); + List l = new ArrayList(); TableField f; } { - f=Field() {fl.add(f);} (LOOKAHEAD(2) FieldSep() f=Field() {fl.add(f);})* (FieldSep())? { return fl; } + f=Field() {l.add(f);} (LOOKAHEAD(2) FieldSep() f=Field() {l.add(f);})* (FieldSep())? { return l; } } TableField Field(): { Token name; Exp exp,rhs; + TableField f; + long i = LineInfo(); } { - "[" exp=Exp() "]" "=" rhs=Exp() { return TableField.keyedField(exp,rhs); } -| LOOKAHEAD(2) name= "=" rhs=Exp() { return TableField.namedField(name.image,rhs); } -| rhs=Exp() { return TableField.listField(rhs); } + "[" exp=Exp() "]" "=" rhs=Exp() { f=TableField.keyedField(exp,rhs); L(f,i); return f; } +| LOOKAHEAD(2) name= "=" rhs=Exp() { f=TableField.namedField(name.image,rhs); L(f,i); return f; } +| rhs=Exp() { f=TableField.listField(rhs); L(f,i); return f; } } void FieldSep(): diff --git a/src/jse/org/luaj/vm2/ast/Chunk.java b/src/jse/org/luaj/vm2/ast/Chunk.java index 1167e962..f09ff461 100644 --- a/src/jse/org/luaj/vm2/ast/Chunk.java +++ b/src/jse/org/luaj/vm2/ast/Chunk.java @@ -21,7 +21,7 @@ ******************************************************************************/ package org.luaj.vm2.ast; -public class Chunk { +public class Chunk extends SyntaxElement { public final Block block; public Chunk(Block b) { diff --git a/src/jse/org/luaj/vm2/ast/Exp.java b/src/jse/org/luaj/vm2/ast/Exp.java index beb3069c..7b41b60b 100644 --- a/src/jse/org/luaj/vm2/ast/Exp.java +++ b/src/jse/org/luaj/vm2/ast/Exp.java @@ -25,7 +25,7 @@ import org.luaj.vm2.Lua; import org.luaj.vm2.LuaValue; abstract -public class Exp { +public class Exp extends SyntaxElement { abstract public void accept(Visitor visitor); public static Exp constant(LuaValue value) { diff --git a/src/jse/org/luaj/vm2/ast/FuncArgs.java b/src/jse/org/luaj/vm2/ast/FuncArgs.java index 8188e803..8c34cfc7 100644 --- a/src/jse/org/luaj/vm2/ast/FuncArgs.java +++ b/src/jse/org/luaj/vm2/ast/FuncArgs.java @@ -26,7 +26,7 @@ import java.util.List; import org.luaj.vm2.LuaString; -public class FuncArgs { +public class FuncArgs extends SyntaxElement { public final List exps; diff --git a/src/jse/org/luaj/vm2/ast/FuncBody.java b/src/jse/org/luaj/vm2/ast/FuncBody.java index 74cb7281..41d37ff3 100644 --- a/src/jse/org/luaj/vm2/ast/FuncBody.java +++ b/src/jse/org/luaj/vm2/ast/FuncBody.java @@ -21,7 +21,7 @@ ******************************************************************************/ package org.luaj.vm2.ast; -public class FuncBody { +public class FuncBody extends SyntaxElement { public ParList parlist; public Block block; public NameScope scope; diff --git a/src/jse/org/luaj/vm2/ast/FuncName.java b/src/jse/org/luaj/vm2/ast/FuncName.java index 79b334ca..e0f8cb90 100644 --- a/src/jse/org/luaj/vm2/ast/FuncName.java +++ b/src/jse/org/luaj/vm2/ast/FuncName.java @@ -24,7 +24,7 @@ package org.luaj.vm2.ast; import java.util.ArrayList; import java.util.List; -public class FuncName { +public class FuncName extends SyntaxElement { // example: a.b.c.d:e // initial base name: "a" diff --git a/src/jse/org/luaj/vm2/ast/ParList.java b/src/jse/org/luaj/vm2/ast/ParList.java index 8801f2a6..76044806 100644 --- a/src/jse/org/luaj/vm2/ast/ParList.java +++ b/src/jse/org/luaj/vm2/ast/ParList.java @@ -24,7 +24,7 @@ package org.luaj.vm2.ast; import java.util.ArrayList; import java.util.List; -public class ParList { +public class ParList extends SyntaxElement { public static final List EMPTY_NAMELIST = new ArrayList(); public static final ParList EMPTY_PARLIST = new ParList(EMPTY_NAMELIST,false); diff --git a/src/jse/org/luaj/vm2/ast/Stat.java b/src/jse/org/luaj/vm2/ast/Stat.java index 343af7ef..275fdfeb 100644 --- a/src/jse/org/luaj/vm2/ast/Stat.java +++ b/src/jse/org/luaj/vm2/ast/Stat.java @@ -26,7 +26,7 @@ import java.util.List; import org.luaj.vm2.ast.Exp.VarExp; abstract -public class Stat { +public class Stat extends SyntaxElement { public abstract void accept(Visitor visitor); public static Stat block(Block block) { diff --git a/src/jse/org/luaj/vm2/ast/SyntaxElement.java b/src/jse/org/luaj/vm2/ast/SyntaxElement.java new file mode 100644 index 00000000..8cd790e6 --- /dev/null +++ b/src/jse/org/luaj/vm2/ast/SyntaxElement.java @@ -0,0 +1,40 @@ +/******************************************************************************* +* Copyright (c) 2012 Luaj.org. All rights reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +******************************************************************************/ +package org.luaj.vm2.ast; + +/** Base class for syntax elements of the parse tree that appear in source files. + * The LuaParser class will fill these values out during parsing for use in + * syntax highlighting, for example. + */ +public class SyntaxElement { + /** The line number on which the element begins. */ + public int beginLine; + + /** The column at which the element begins. */ + public short beginColumn; + + /** The line number on which the element ends. */ + public int endLine; + + /** The column at which the element ends. */ + public short endColumn; +} diff --git a/src/jse/org/luaj/vm2/ast/TableField.java b/src/jse/org/luaj/vm2/ast/TableField.java index 7056bac5..2793f02d 100644 --- a/src/jse/org/luaj/vm2/ast/TableField.java +++ b/src/jse/org/luaj/vm2/ast/TableField.java @@ -21,7 +21,7 @@ ******************************************************************************/ package org.luaj.vm2.ast; -public class TableField { +public class TableField extends SyntaxElement { public final Exp index; public final String name; diff --git a/src/jse/org/luaj/vm2/parser/LuaParser.java b/src/jse/org/luaj/vm2/parser/LuaParser.java index 93d5a87b..f19a6aaf 100644 --- a/src/jse/org/luaj/vm2/parser/LuaParser.java +++ b/src/jse/org/luaj/vm2/parser/LuaParser.java @@ -5,6 +5,9 @@ import org.luaj.vm2.ast.*; import java.util.*; public class LuaParser implements LuaParserConstants { + static { + LuaValue.valueOf(true); + } public static void main(String args[]) throws ParseException { LuaParser parser = new LuaParser(System.in); @@ -23,9 +26,33 @@ public class LuaParser implements LuaParserConstants { return (Exp.FuncCall) pe; } + public SimpleCharStream getCharStream() { + return jj_input_stream; + } + + private long LineInfo() { + return ((long) jj_input_stream.getBeginLine() << 32) | jj_input_stream.getBeginColumn(); + } + + private void L(SyntaxElement e, long startinfo) { + e.beginLine = (int) (startinfo >> 32); + e.beginColumn = (short) startinfo; + e.endLine = token.endLine; + e.endColumn = (short) token.endColumn; + } + + private void L(SyntaxElement e, Token starttoken) { + e.beginLine = starttoken.beginLine; + e.beginColumn = (short) starttoken.beginColumn; + e.endLine = token.endLine; + e.endColumn = (short) token.endColumn; + } + /** Root production. */ final public Chunk Chunk() throws ParseException { Block b; + Chunk c; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 69: jj_consume_token(69); @@ -36,13 +63,14 @@ public class LuaParser implements LuaParserConstants { } b = Block(); jj_consume_token(0); - {if (true) return new Chunk(b);} + c=new Chunk(b); L(c,i); {if (true) return c;} throw new Error("Missing return statement in function"); } final public Block Block() throws ParseException { Block b = new Block(); Stat s; + long i = LineInfo(); label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -75,7 +103,7 @@ public class LuaParser implements LuaParserConstants { default: ; } - {if (true) return b;} + L(b,i); {if (true) return b;} throw new Error("Missing return statement in function"); } @@ -88,6 +116,7 @@ public class LuaParser implements LuaParserConstants { Token n; List nl; List el=null; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 70: jj_consume_token(70); @@ -95,22 +124,22 @@ public class LuaParser implements LuaParserConstants { break; case DBCOLON: s = Label(); - {if (true) return s;} + L(s,i); {if (true) return s;} break; case BREAK: jj_consume_token(BREAK); - {if (true) return Stat.breakstat();} + s=Stat.breakstat(); L(s,i); {if (true) return s;} break; case GOTO: jj_consume_token(GOTO); n = jj_consume_token(NAME); - {if (true) return Stat.gotostat(n.image);} + s=Stat.gotostat(n.image); L(s,i); {if (true) return s;} break; case DO: jj_consume_token(DO); b = Block(); jj_consume_token(END); - {if (true) return Stat.block(b);} + s=Stat.block(b); L(s,i); {if (true) return s;} break; case WHILE: jj_consume_token(WHILE); @@ -118,18 +147,18 @@ public class LuaParser implements LuaParserConstants { jj_consume_token(DO); b = Block(); jj_consume_token(END); - {if (true) return Stat.whiledo(e,b);} + s=Stat.whiledo(e,b); L(s,i); {if (true) return s;} break; case REPEAT: jj_consume_token(REPEAT); b = Block(); jj_consume_token(UNTIL); e = Exp(); - {if (true) return Stat.repeatuntil(b,e);} + s=Stat.repeatuntil(b,e); L(s,i); {if (true) return s;} break; case IF: s = IfThenElse(); - {if (true) return s;} + L(s,i); {if (true) return s;} break; default: if (jj_2_1(3)) { @@ -150,7 +179,7 @@ public class LuaParser implements LuaParserConstants { jj_consume_token(DO); b = Block(); jj_consume_token(END); - {if (true) return Stat.fornumeric(n.image,e,e2,e3,b);} + s=Stat.fornumeric(n.image,e,e2,e3,b); L(s,i); {if (true) return s;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FOR: @@ -161,13 +190,13 @@ public class LuaParser implements LuaParserConstants { jj_consume_token(DO); b = Block(); jj_consume_token(END); - {if (true) return Stat.forgeneric(nl,el,b);} + s=Stat.forgeneric(nl,el,b); L(s,i); {if (true) return s;} break; case FUNCTION: jj_consume_token(FUNCTION); fn = FuncName(); fb = FuncBody(); - {if (true) return Stat.functiondef(fn,fb);} + s=Stat.functiondef(fn,fb); L(s,i); {if (true) return s;} break; default: if (jj_2_2(2)) { @@ -175,7 +204,7 @@ public class LuaParser implements LuaParserConstants { jj_consume_token(FUNCTION); n = jj_consume_token(NAME); fb = FuncBody(); - {if (true) return Stat.localfunctiondef(n.image,fb);} + s=Stat.localfunctiondef(n.image,fb); L(s,i); {if (true) return s;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LOCAL: @@ -189,12 +218,12 @@ public class LuaParser implements LuaParserConstants { default: ; } - {if (true) return Stat.localassignment(nl,el);} + s=Stat.localassignment(nl,el); L(s,i); {if (true) return s;} break; case NAME: case 75: s = ExprStat(); - {if (true) return s;} + L(s,i); {if (true) return s;} break; default: jj_consume_token(-1); @@ -249,6 +278,8 @@ public class LuaParser implements LuaParserConstants { final public Stat ReturnStat() throws ParseException { List el=null; + Stat s; + long i = LineInfo(); jj_consume_token(RETURN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LONGSTRING0: @@ -282,7 +313,7 @@ public class LuaParser implements LuaParserConstants { default: ; } - {if (true) return Stat.returnstat(el);} + s=Stat.returnstat(el); L(s,i); {if (true) return s;} throw new Error("Missing return statement in function"); } @@ -296,18 +327,19 @@ public class LuaParser implements LuaParserConstants { } final public Stat ExprStat() throws ParseException { - Exp.PrimaryExp pe; - Stat as=null; - pe = PrimaryExp(); + Exp.PrimaryExp p; + Stat s=null; + long i = LineInfo(); + p = PrimaryExp(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 71: case 72: - as = Assign(assertvarexp(pe)); + s = Assign(assertvarexp(p)); break; default: ; } - {if (true) return as==null? Stat.functioncall(assertfunccall(pe)): as;} + if (s==null) { s=Stat.functioncall(assertfunccall(p)); } L(s,i); {if (true) return s;} throw new Error("Missing return statement in function"); } @@ -316,6 +348,8 @@ public class LuaParser implements LuaParserConstants { vl.add(v0); Exp.VarExp ve; List el; + Stat s; + long i = LineInfo(); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -331,22 +365,22 @@ public class LuaParser implements LuaParserConstants { } jj_consume_token(71); el = ExpList(); - {if (true) return Stat.assignment(vl,el);} + s=Stat.assignment(vl,el); L(s,i); {if (true) return s;} throw new Error("Missing return statement in function"); } final public Exp.VarExp VarExp() throws ParseException { - Exp.PrimaryExp pe; - pe = PrimaryExp(); - {if (true) return assertvarexp(pe);} + Exp.PrimaryExp p; + p = PrimaryExp(); + {if (true) return assertvarexp(p);} throw new Error("Missing return statement in function"); } final public FuncName FuncName() throws ParseException { - FuncName fn; Token n; + FuncName f; n = jj_consume_token(NAME); - fn=new FuncName(n.image); + f=new FuncName(n.image); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -358,34 +392,36 @@ public class LuaParser implements LuaParserConstants { } jj_consume_token(73); n = jj_consume_token(NAME); - fn.adddot(n.image); + f.adddot(n.image); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 74: jj_consume_token(74); n = jj_consume_token(NAME); - fn.method=n.image; + f.method=n.image; break; default: ; } - {if (true) return fn;} + L(f,n); {if (true) return f;} throw new Error("Missing return statement in function"); } final public Exp.PrimaryExp PrefixExp() throws ParseException { Token n; Exp e; + Exp.PrimaryExp p; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NAME: n = jj_consume_token(NAME); - {if (true) return Exp.nameprefix(n.image);} + p=Exp.nameprefix(n.image); L(p,i); {if (true) return p;} break; case 75: jj_consume_token(75); e = Exp(); jj_consume_token(76); - {if (true) return Exp.parensprefix(e);} + p=Exp.parensprefix(e); L(p,i); {if (true) return p;} break; default: jj_consume_token(-1); @@ -395,8 +431,9 @@ public class LuaParser implements LuaParserConstants { } final public Exp.PrimaryExp PrimaryExp() throws ParseException { - Exp.PrimaryExp pe; - pe = PrefixExp(); + Exp.PrimaryExp p; + long i = LineInfo(); + p = PrefixExp(); label_5: while (true) { if (jj_2_3(2)) { @@ -404,9 +441,9 @@ public class LuaParser implements LuaParserConstants { } else { break label_5; } - pe = PostfixOp(pe); + p = PostfixOp(p); } - {if (true) return pe;} + L(p,i); {if (true) return p;} throw new Error("Missing return statement in function"); } @@ -414,23 +451,25 @@ public class LuaParser implements LuaParserConstants { Token n; Exp e; FuncArgs a; + Exp.PrimaryExp p; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 73: jj_consume_token(73); n = jj_consume_token(NAME); - {if (true) return Exp.fieldop(lhs, n.image);} + p=Exp.fieldop(lhs, n.image); L(p,i); {if (true) return p;} break; case 77: jj_consume_token(77); e = Exp(); jj_consume_token(78); - {if (true) return Exp.indexop(lhs, e);} + p=Exp.indexop(lhs, e); L(p,i); {if (true) return p;} break; case 74: jj_consume_token(74); n = jj_consume_token(NAME); a = FuncArgs(); - {if (true) return Exp.methodop(lhs, n.image,a);} + p=Exp.methodop(lhs, n.image,a); L(p,i); {if (true) return p;} break; case LONGSTRING0: case LONGSTRING1: @@ -442,7 +481,7 @@ public class LuaParser implements LuaParserConstants { case 75: case 80: a = FuncArgs(); - {if (true) return Exp.functionop(lhs, a);} + p=Exp.functionop(lhs, a); L(p,i); {if (true) return p;} break; default: jj_consume_token(-1); @@ -455,6 +494,8 @@ public class LuaParser implements LuaParserConstants { List el=null; TableConstructor tc; LuaString s; + FuncArgs a; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 75: jj_consume_token(75); @@ -484,11 +525,11 @@ public class LuaParser implements LuaParserConstants { ; } jj_consume_token(76); - {if (true) return FuncArgs.explist(el);} + a=FuncArgs.explist(el); L(a,i); {if (true) return a;} break; case 80: tc = TableConstructor(); - {if (true) return FuncArgs.tableconstructor(tc);} + a=FuncArgs.tableconstructor(tc); L(a,i); {if (true) return a;} break; case LONGSTRING0: case LONGSTRING1: @@ -498,7 +539,7 @@ public class LuaParser implements LuaParserConstants { case STRING: case CHARSTRING: s = Str(); - {if (true) return FuncArgs.string(s);} + a=FuncArgs.string(s); L(a,i); {if (true) return a;} break; default: jj_consume_token(-1); @@ -508,10 +549,10 @@ public class LuaParser implements LuaParserConstants { } final public List NameList() throws ParseException { - List nl = new ArrayList(); + List l = new ArrayList(); Token name; name = jj_consume_token(NAME); - nl.add(new Name(name.image)); + l.add(new Name(name.image)); label_6: while (true) { if (jj_2_4(2)) { @@ -521,17 +562,17 @@ public class LuaParser implements LuaParserConstants { } jj_consume_token(72); name = jj_consume_token(NAME); - nl.add(new Name(name.image)); + l.add(new Name(name.image)); } - {if (true) return nl;} + {if (true) return l;} throw new Error("Missing return statement in function"); } final public List ExpList() throws ParseException { - List el = new ArrayList(); + List l = new ArrayList(); Exp e; e = Exp(); - el.add(e); + l.add(e); label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -543,9 +584,9 @@ public class LuaParser implements LuaParserConstants { } jj_consume_token(72); e = Exp(); - el.add(e); + l.add(e); } - {if (true) return el;} + {if (true) return l;} throw new Error("Missing return statement in function"); } @@ -553,24 +594,25 @@ public class LuaParser implements LuaParserConstants { Token n; LuaString s; Exp e; - TableConstructor tc; - FuncBody fb; + TableConstructor c; + FuncBody b; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NIL: jj_consume_token(NIL); - {if (true) return Exp.constant(LuaValue.NIL);} + e=Exp.constant(LuaValue.NIL); L(e,i); {if (true) return e;} break; case TRUE: jj_consume_token(TRUE); - {if (true) return Exp.constant(LuaValue.TRUE);} + e=Exp.constant(LuaValue.TRUE); L(e,i); {if (true) return e;} break; case FALSE: jj_consume_token(FALSE); - {if (true) return Exp.constant(LuaValue.FALSE);} + e=Exp.constant(LuaValue.FALSE); L(e,i); {if (true) return e;} break; case NUMBER: n = jj_consume_token(NUMBER); - {if (true) return Exp.numberconstant(n.image);} + e=Exp.numberconstant(n.image); L(e,i); {if (true) return e;} break; case LONGSTRING0: case LONGSTRING1: @@ -580,19 +622,19 @@ public class LuaParser implements LuaParserConstants { case STRING: case CHARSTRING: s = Str(); - {if (true) return Exp.constant(s);} + e=Exp.constant(s); L(e,i); {if (true) return e;} break; case 79: jj_consume_token(79); - {if (true) return Exp.varargs();} + e=Exp.varargs(); L(e,i); {if (true) return e;} break; case 80: - tc = TableConstructor(); - {if (true) return Exp.tableconstructor(tc);} + c = TableConstructor(); + e=Exp.tableconstructor(c); L(e,i); {if (true) return e;} break; case FUNCTION: - fb = FunctionCall(); - {if (true) return Exp.anonymousfunction(fb);} + b = FunctionCall(); + e=Exp.anonymousfunction(b); L(e,i); {if (true) return e;} break; case NAME: case 75: @@ -646,6 +688,7 @@ public class LuaParser implements LuaParserConstants { final public Exp Exp() throws ParseException { Exp e,s; int op; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LONGSTRING0: case LONGSTRING1: @@ -687,21 +730,24 @@ public class LuaParser implements LuaParserConstants { s = Exp(); e=Exp.binaryexp(e,op,s); } - {if (true) return e;} + L(e,i); {if (true) return e;} throw new Error("Missing return statement in function"); } final public FuncBody FunctionCall() throws ParseException { - FuncBody fb; + FuncBody b; + long i = LineInfo(); jj_consume_token(FUNCTION); - fb = FuncBody(); - {if (true) return fb;} + b = FuncBody(); + L(b,i); {if (true) return b;} throw new Error("Missing return statement in function"); } final public FuncBody FuncBody() throws ParseException { ParList pl=null; Block b; + FuncBody f; + long i = LineInfo(); jj_consume_token(75); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NAME: @@ -714,30 +760,32 @@ public class LuaParser implements LuaParserConstants { jj_consume_token(76); b = Block(); jj_consume_token(END); - {if (true) return new FuncBody(pl,b);} + f=new FuncBody(pl,b); L(f,i); {if (true) return f;} throw new Error("Missing return statement in function"); } final public ParList ParList() throws ParseException { - List nl=null; + List l=null; boolean v=false; + ParList p; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NAME: - nl = NameList(); + l = NameList(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 72: jj_consume_token(72); jj_consume_token(79); - v=true; + v=true; break; default: ; } - {if (true) return new ParList(nl,v);} + p=new ParList(l,v); L(p,i); {if (true) return p;} break; case 79: jj_consume_token(79); - {if (true) return new ParList(null,true);} ; + p=new ParList(null,true); L(p,i); {if (true) return p;} break; default: jj_consume_token(-1); @@ -747,8 +795,9 @@ public class LuaParser implements LuaParserConstants { } final public TableConstructor TableConstructor() throws ParseException { - TableConstructor tc = new TableConstructor(); - List fl = null; + TableConstructor c = new TableConstructor(); + List l = null; + long i = LineInfo(); jj_consume_token(80); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LONGSTRING0: @@ -771,22 +820,22 @@ public class LuaParser implements LuaParserConstants { case 79: case 80: case 83: - fl = FieldList(); - tc.fields=fl; + l = FieldList(); + c.fields=l; break; default: ; } jj_consume_token(81); - {if (true) return tc;} + L(c,i); {if (true) return c;} throw new Error("Missing return statement in function"); } final public List FieldList() throws ParseException { - List fl = new ArrayList(); + List l = new ArrayList(); TableField f; f = Field(); - fl.add(f); + l.add(f); label_9: while (true) { if (jj_2_6(2)) { @@ -796,7 +845,7 @@ public class LuaParser implements LuaParserConstants { } FieldSep(); f = Field(); - fl.add(f); + l.add(f); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 70: @@ -806,13 +855,15 @@ public class LuaParser implements LuaParserConstants { default: ; } - {if (true) return fl;} + {if (true) return l;} throw new Error("Missing return statement in function"); } final public TableField Field() throws ParseException { Token name; Exp exp,rhs; + TableField f; + long i = LineInfo(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 77: jj_consume_token(77); @@ -820,14 +871,14 @@ public class LuaParser implements LuaParserConstants { jj_consume_token(78); jj_consume_token(71); rhs = Exp(); - {if (true) return TableField.keyedField(exp,rhs);} + f=TableField.keyedField(exp,rhs); L(f,i); {if (true) return f;} break; default: if (jj_2_7(2)) { name = jj_consume_token(NAME); jj_consume_token(71); rhs = Exp(); - {if (true) return TableField.namedField(name.image,rhs);} + f=TableField.namedField(name.image,rhs); L(f,i); {if (true) return f;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LONGSTRING0: @@ -850,7 +901,7 @@ public class LuaParser implements LuaParserConstants { case 80: case 83: rhs = Exp(); - {if (true) return TableField.listField(rhs);} + f=TableField.listField(rhs); L(f,i); {if (true) return f;} break; default: jj_consume_token(-1); @@ -1007,28 +1058,247 @@ public class LuaParser implements LuaParserConstants { catch(LookaheadSuccess ls) { return true; } } + private boolean jj_3R_43() { + if (jj_3R_58()) return true; + return false; + } + + private boolean jj_3R_42() { + if (jj_3R_57()) return true; + return false; + } + + private boolean jj_3R_41() { + if (jj_scan_token(75)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_56()) jj_scanpos = xsp; + if (jj_scan_token(76)) return true; + return false; + } + + private boolean jj_3R_38() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_41()) { + jj_scanpos = xsp; + if (jj_3R_42()) { + jj_scanpos = xsp; + if (jj_3R_43()) return true; + } + } + return false; + } + + private boolean jj_3_3() { + if (jj_3R_10()) return true; + return false; + } + + private boolean jj_3R_18() { + if (jj_3R_38()) return true; + return false; + } + + private boolean jj_3R_17() { + if (jj_scan_token(74)) return true; + if (jj_scan_token(NAME)) return true; + return false; + } + + private boolean jj_3R_16() { + if (jj_scan_token(77)) return true; + if (jj_3R_12()) return true; + return false; + } + + private boolean jj_3R_35() { + if (jj_3R_40()) return true; + return false; + } + + private boolean jj_3R_15() { + if (jj_scan_token(73)) return true; + if (jj_scan_token(NAME)) return true; + return false; + } + + private boolean jj_3R_10() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_15()) { + jj_scanpos = xsp; + if (jj_3R_16()) { + jj_scanpos = xsp; + if (jj_3R_17()) { + jj_scanpos = xsp; + if (jj_3R_18()) return true; + } + } + } + return false; + } + + private boolean jj_3R_59() { + if (jj_scan_token(FUNCTION)) return true; + return false; + } + + private boolean jj_3_5() { + if (jj_3R_11()) return true; + if (jj_3R_12()) return true; + return false; + } + + private boolean jj_3R_60() { + if (jj_3R_70()) return true; + return false; + } + + private boolean jj_3R_55() { + if (jj_scan_token(69)) return true; + return false; + } + + private boolean jj_3R_54() { + if (jj_scan_token(NOT)) return true; + return false; + } + + private boolean jj_3R_53() { + if (jj_scan_token(83)) return true; + return false; + } + + private boolean jj_3R_40() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_53()) { + jj_scanpos = xsp; + if (jj_3R_54()) { + jj_scanpos = xsp; + if (jj_3R_55()) return true; + } + } + return false; + } + + private boolean jj_3R_34() { + if (jj_3R_39()) return true; + return false; + } + + private boolean jj_3R_12() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_34()) { + jj_scanpos = xsp; + if (jj_3R_35()) return true; + } + return false; + } + + private boolean jj_3R_73() { + if (jj_scan_token(75)) return true; + return false; + } + + private boolean jj_3R_33() { + if (jj_scan_token(OR)) return true; + return false; + } + + private boolean jj_3R_72() { + if (jj_scan_token(NAME)) return true; + return false; + } + + private boolean jj_3R_70() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_72()) { + jj_scanpos = xsp; + if (jj_3R_73()) return true; + } + return false; + } + + private boolean jj_3_2() { + if (jj_scan_token(LOCAL)) return true; + if (jj_scan_token(FUNCTION)) return true; + return false; + } + + private boolean jj_3R_32() { + if (jj_scan_token(AND)) return true; + return false; + } + + private boolean jj_3R_31() { + if (jj_scan_token(94)) return true; + return false; + } + + private boolean jj_3_4() { + if (jj_scan_token(72)) return true; + if (jj_scan_token(NAME)) return true; + return false; + } + + private boolean jj_3R_30() { + if (jj_scan_token(93)) return true; + return false; + } + + private boolean jj_3_1() { + if (jj_scan_token(FOR)) return true; + if (jj_scan_token(NAME)) return true; + if (jj_scan_token(71)) return true; + return false; + } + + private boolean jj_3R_29() { + if (jj_scan_token(92)) return true; + return false; + } + private boolean jj_3R_28() { if (jj_scan_token(91)) return true; return false; } + private boolean jj_3R_69() { + if (jj_scan_token(LONGSTRINGN)) return true; + return false; + } + private boolean jj_3R_27() { if (jj_scan_token(90)) return true; return false; } + private boolean jj_3R_68() { + if (jj_scan_token(LONGSTRING3)) return true; + return false; + } + private boolean jj_3R_26() { if (jj_scan_token(89)) return true; return false; } + private boolean jj_3R_67() { + if (jj_scan_token(LONGSTRING2)) return true; + return false; + } + private boolean jj_3R_25() { if (jj_scan_token(88)) return true; return false; } - private boolean jj_3R_52() { - if (jj_3R_60()) return true; + private boolean jj_3R_66() { + if (jj_scan_token(LONGSTRING1)) return true; return false; } @@ -1037,8 +1307,8 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_51() { - if (jj_3R_59()) return true; + private boolean jj_3R_65() { + if (jj_scan_token(LONGSTRING0)) return true; return false; } @@ -1047,8 +1317,8 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_50() { - if (jj_3R_57()) return true; + private boolean jj_3R_64() { + if (jj_scan_token(CHARSTRING)) return true; return false; } @@ -1057,8 +1327,33 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_49() { - if (jj_scan_token(79)) return true; + private boolean jj_3R_63() { + if (jj_scan_token(STRING)) return true; + return false; + } + + private boolean jj_3R_58() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_63()) { + jj_scanpos = xsp; + if (jj_3R_64()) { + jj_scanpos = xsp; + if (jj_3R_65()) { + jj_scanpos = xsp; + if (jj_3R_66()) { + jj_scanpos = xsp; + if (jj_3R_67()) { + jj_scanpos = xsp; + if (jj_3R_68()) { + jj_scanpos = xsp; + if (jj_3R_69()) return true; + } + } + } + } + } + } return false; } @@ -1067,27 +1362,11 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_48() { - if (jj_3R_58()) return true; - return false; - } - - private boolean jj_3_6() { - if (jj_3R_13()) return true; - if (jj_3R_14()) return true; - return false; - } - private boolean jj_3R_20() { if (jj_scan_token(83)) return true; return false; } - private boolean jj_3R_47() { - if (jj_scan_token(NUMBER)) return true; - return false; - } - private boolean jj_3R_19() { if (jj_scan_token(82)) return true; return false; @@ -1142,6 +1421,52 @@ public class LuaParser implements LuaParserConstants { return false; } + private boolean jj_3_6() { + if (jj_3R_13()) return true; + if (jj_3R_14()) return true; + return false; + } + + private boolean jj_3R_52() { + if (jj_3R_60()) return true; + return false; + } + + private boolean jj_3R_51() { + if (jj_3R_59()) return true; + return false; + } + + private boolean jj_3R_50() { + if (jj_3R_57()) return true; + return false; + } + + private boolean jj_3R_13() { + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(72)) { + jj_scanpos = xsp; + if (jj_scan_token(70)) return true; + } + return false; + } + + private boolean jj_3R_49() { + if (jj_scan_token(79)) return true; + return false; + } + + private boolean jj_3R_48() { + if (jj_3R_58()) return true; + return false; + } + + private boolean jj_3R_47() { + if (jj_scan_token(NUMBER)) return true; + return false; + } + private boolean jj_3R_46() { if (jj_scan_token(FALSE)) return true; return false; @@ -1188,16 +1513,6 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_13() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(72)) { - jj_scanpos = xsp; - if (jj_scan_token(70)) return true; - } - return false; - } - private boolean jj_3R_37() { if (jj_3R_12()) return true; return false; @@ -1227,23 +1542,18 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_61() { - if (jj_3R_12()) return true; - return false; - } - private boolean jj_3R_71() { if (jj_3R_14()) return true; return false; } - private boolean jj_3R_62() { - if (jj_3R_71()) return true; + private boolean jj_3R_61() { + if (jj_3R_12()) return true; return false; } - private boolean jj_3R_56() { - if (jj_3R_61()) return true; + private boolean jj_3R_62() { + if (jj_3R_71()) return true; return false; } @@ -1256,267 +1566,8 @@ public class LuaParser implements LuaParserConstants { return false; } - private boolean jj_3R_43() { - if (jj_3R_58()) return true; - return false; - } - - private boolean jj_3R_42() { - if (jj_3R_57()) return true; - return false; - } - - private boolean jj_3R_41() { - if (jj_scan_token(75)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_56()) jj_scanpos = xsp; - if (jj_scan_token(76)) return true; - return false; - } - - private boolean jj_3R_38() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_41()) { - jj_scanpos = xsp; - if (jj_3R_42()) { - jj_scanpos = xsp; - if (jj_3R_43()) return true; - } - } - return false; - } - - private boolean jj_3_3() { - if (jj_3R_10()) return true; - return false; - } - - private boolean jj_3R_18() { - if (jj_3R_38()) return true; - return false; - } - - private boolean jj_3R_17() { - if (jj_scan_token(74)) return true; - if (jj_scan_token(NAME)) return true; - return false; - } - - private boolean jj_3R_16() { - if (jj_scan_token(77)) return true; - if (jj_3R_12()) return true; - return false; - } - - private boolean jj_3R_15() { - if (jj_scan_token(73)) return true; - if (jj_scan_token(NAME)) return true; - return false; - } - - private boolean jj_3R_10() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_15()) { - jj_scanpos = xsp; - if (jj_3R_16()) { - jj_scanpos = xsp; - if (jj_3R_17()) { - jj_scanpos = xsp; - if (jj_3R_18()) return true; - } - } - } - return false; - } - - private boolean jj_3R_35() { - if (jj_3R_40()) return true; - return false; - } - - private boolean jj_3R_60() { - if (jj_3R_70()) return true; - return false; - } - - private boolean jj_3_5() { - if (jj_3R_11()) return true; - if (jj_3R_12()) return true; - return false; - } - - private boolean jj_3R_59() { - if (jj_scan_token(FUNCTION)) return true; - return false; - } - - private boolean jj_3_2() { - if (jj_scan_token(LOCAL)) return true; - if (jj_scan_token(FUNCTION)) return true; - return false; - } - - private boolean jj_3_1() { - if (jj_scan_token(FOR)) return true; - if (jj_scan_token(NAME)) return true; - if (jj_scan_token(71)) return true; - return false; - } - - private boolean jj_3R_73() { - if (jj_scan_token(75)) return true; - return false; - } - - private boolean jj_3R_72() { - if (jj_scan_token(NAME)) return true; - return false; - } - - private boolean jj_3R_70() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_72()) { - jj_scanpos = xsp; - if (jj_3R_73()) return true; - } - return false; - } - - private boolean jj_3R_34() { - if (jj_3R_39()) return true; - return false; - } - - private boolean jj_3R_12() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_34()) { - jj_scanpos = xsp; - if (jj_3R_35()) return true; - } - return false; - } - - private boolean jj_3R_55() { - if (jj_scan_token(69)) return true; - return false; - } - - private boolean jj_3_4() { - if (jj_scan_token(72)) return true; - if (jj_scan_token(NAME)) return true; - return false; - } - - private boolean jj_3R_54() { - if (jj_scan_token(NOT)) return true; - return false; - } - - private boolean jj_3R_53() { - if (jj_scan_token(83)) return true; - return false; - } - - private boolean jj_3R_40() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_53()) { - jj_scanpos = xsp; - if (jj_3R_54()) { - jj_scanpos = xsp; - if (jj_3R_55()) return true; - } - } - return false; - } - - private boolean jj_3R_69() { - if (jj_scan_token(LONGSTRINGN)) return true; - return false; - } - - private boolean jj_3R_68() { - if (jj_scan_token(LONGSTRING3)) return true; - return false; - } - - private boolean jj_3R_67() { - if (jj_scan_token(LONGSTRING2)) return true; - return false; - } - - private boolean jj_3R_66() { - if (jj_scan_token(LONGSTRING1)) return true; - return false; - } - - private boolean jj_3R_33() { - if (jj_scan_token(OR)) return true; - return false; - } - - private boolean jj_3R_65() { - if (jj_scan_token(LONGSTRING0)) return true; - return false; - } - - private boolean jj_3R_32() { - if (jj_scan_token(AND)) return true; - return false; - } - - private boolean jj_3R_64() { - if (jj_scan_token(CHARSTRING)) return true; - return false; - } - - private boolean jj_3R_31() { - if (jj_scan_token(94)) return true; - return false; - } - - private boolean jj_3R_63() { - if (jj_scan_token(STRING)) return true; - return false; - } - - private boolean jj_3R_58() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_63()) { - jj_scanpos = xsp; - if (jj_3R_64()) { - jj_scanpos = xsp; - if (jj_3R_65()) { - jj_scanpos = xsp; - if (jj_3R_66()) { - jj_scanpos = xsp; - if (jj_3R_67()) { - jj_scanpos = xsp; - if (jj_3R_68()) { - jj_scanpos = xsp; - if (jj_3R_69()) return true; - } - } - } - } - } - } - return false; - } - - private boolean jj_3R_30() { - if (jj_scan_token(93)) return true; - return false; - } - - private boolean jj_3R_29() { - if (jj_scan_token(92)) return true; + private boolean jj_3R_56() { + if (jj_3R_61()) return true; return false; } diff --git a/src/jse/org/luaj/vm2/parser/SimpleCharStream.java b/src/jse/org/luaj/vm2/parser/SimpleCharStream.java index da3746ca..68e5932c 100644 --- a/src/jse/org/luaj/vm2/parser/SimpleCharStream.java +++ b/src/jse/org/luaj/vm2/parser/SimpleCharStream.java @@ -30,10 +30,10 @@ public class SimpleCharStream protected char[] buffer; protected int maxNextCharInd = 0; protected int inBuf = 0; - protected int tabSize = 8; + protected int tabSize = 1; - protected void setTabSize(int i) { tabSize = i; } - protected int getTabSize(int i) { return tabSize; } + public void setTabSize(int i) { tabSize = i; } + public int getTabSize(int i) { return tabSize; } protected void ExpandBuff(boolean wrapAround)