|
From: <jom...@us...> - 2016-04-06 16:18:45
|
Revision: 1882
http://sourceforge.net/p/jason/svn/1882
Author: jomifred
Date: 2016-04-06 16:18:42 +0000 (Wed, 06 Apr 2016)
Log Message:
-----------
parser for fork
Modified Paths:
--------------
trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc
trunk/src/jason/asSyntax/parser/as2j.java
Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc
===================================================================
--- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2016-04-06 15:11:33 UTC (rev 1881)
+++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2016-04-06 16:18:42 UTC (rev 1882)
@@ -390,9 +390,6 @@
[ ";" ][ R = plan_body() ]
{ if (R != null) {
- //if (!isControl && !hasPV) {
- // throw new ParseException(getSourceRef(F)+" Expected ';' after '"+F+"'.");
- //}
((PlanBody)F).setBodyNext( R );
}
return (PlanBody)F;
@@ -400,7 +397,7 @@
}
-PlanBody plan_body_term() : { Object F; PlanBody R = null; Literal stmtLiteral; }
+PlanBody plan_body_term() : { Object F; PlanBody R = null; }
{
F = plan_body_factor()
@@ -409,8 +406,21 @@
{
if (R == null)
return (PlanBody)F;
- try {
- stmtLiteral = new InternalActionLiteral(ASSyntax.createStructure(".fork", jason.stdlib.fork.aOr, (Term)F, (Term)R), curAg);
+ try {
+ Structure s = ASSyntax.createStructure(".fork", jason.stdlib.fork.aOr, (Term)F);
+ if (R.toString().startsWith(".fork(or,")) {
+ // if R is another fork or, put they args into this fork
+ InternalActionLiteral ial = (InternalActionLiteral)R.getBodyTerm();
+ if (ial.getIA(curAg) instanceof jason.stdlib.fork) {
+ for (int i=1; i<ial.getArity(); i++) {
+ s.addTerm(ial.getTerm(i));
+ }
+ }
+ } else {
+ s.addTerm(R);
+ }
+
+ Literal stmtLiteral = new InternalActionLiteral(s, curAg);
stmtLiteral.setSrcInfo( ((Term)F).getSrcInfo() );
return new PlanBodyImpl(BodyType.internalAction, stmtLiteral);
} catch (Exception e) {
@@ -419,7 +429,7 @@
}
}
-PlanBody plan_body_factor() : { Object F; PlanBody R = null; Literal stmtLiteral; } // boolean hasPV = false; boolean isControl = true; }
+PlanBody plan_body_factor() : { Object F; PlanBody R = null; } // boolean hasPV = false; boolean isControl = true; }
{
( F = stmtIF()
@@ -429,14 +439,24 @@
if (!(F instanceof PlanBody)) throw new ParseException(getSourceRef(F)+" "+F+" is not a body literal!"); }
)
- //[ ";" { hasPV = true; }
- //]
- [ <TK_PAND> R = plan_body_factor() ]
+[ <TK_PAND> R = plan_body_factor() ]
{
if (R == null)
return (PlanBody)F;
try {
- stmtLiteral = new InternalActionLiteral(ASSyntax.createStructure(".fork", jason.stdlib.fork.aAnd, (Term)F, (Term)R), curAg);
+ Structure s = ASSyntax.createStructure(".fork", jason.stdlib.fork.aAnd, (Term)F);
+ if (R.toString().startsWith(".fork(and,")) {
+ // if R is another fork and, put they args into this fork
+ InternalActionLiteral ial = (InternalActionLiteral)R.getBodyTerm();
+ if (ial.getIA(curAg) instanceof jason.stdlib.fork) {
+ for (int i=1; i<ial.getArity(); i++) {
+ s.addTerm(ial.getTerm(i));
+ }
+ }
+ } else {
+ s.addTerm(R);
+ }
+ Literal stmtLiteral = new InternalActionLiteral(s, curAg);
stmtLiteral.setSrcInfo( ((Term)F).getSrcInfo() );
return new PlanBodyImpl(BodyType.internalAction, stmtLiteral);
} catch (Exception e) {
Modified: trunk/src/jason/asSyntax/parser/as2j.java
===================================================================
--- trunk/src/jason/asSyntax/parser/as2j.java 2016-04-06 15:11:33 UTC (rev 1881)
+++ trunk/src/jason/asSyntax/parser/as2j.java 2016-04-06 16:18:42 UTC (rev 1882)
@@ -504,9 +504,6 @@
;
}
if (R != null) {
- //if (!isControl && !hasPV) {
- // throw new ParseException(getSourceRef(F)+" Expected ';' after '"+F+"'.");
- //}
((PlanBody)F).setBodyNext( R );
}
{if (true) return (PlanBody)F;}
@@ -514,7 +511,7 @@
}
final public PlanBody plan_body_term() throws ParseException {
- Object F; PlanBody R = null; Literal stmtLiteral;
+ Object F; PlanBody R = null;
F = plan_body_factor();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case TK_POR:
@@ -528,7 +525,20 @@
if (R == null)
{if (true) return (PlanBody)F;}
try {
- stmtLiteral = new InternalActionLiteral(ASSyntax.createStructure(".fork", jason.stdlib.fork.aOr, (Term)F, (Term)R), curAg);
+ Structure s = ASSyntax.createStructure(".fork", jason.stdlib.fork.aOr, (Term)F);
+ if (R.toString().startsWith(".fork(or,")) {
+ // if R is another fork or, put they args into this fork
+ InternalActionLiteral ial = (InternalActionLiteral)R.getBodyTerm();
+ if (ial.getIA(curAg) instanceof jason.stdlib.fork) {
+ for (int i=1; i<ial.getArity(); i++) {
+ s.addTerm(ial.getTerm(i));
+ }
+ }
+ } else {
+ s.addTerm(R);
+ }
+
+ Literal stmtLiteral = new InternalActionLiteral(s, curAg);
stmtLiteral.setSrcInfo( ((Term)F).getSrcInfo() );
{if (true) return new PlanBodyImpl(BodyType.internalAction, stmtLiteral);}
} catch (Exception e) {
@@ -538,7 +548,7 @@
}
final public PlanBody plan_body_factor() throws ParseException {
- Object F; PlanBody R = null; Literal stmtLiteral;
+ Object F; PlanBody R = null;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case TK_IF:
F = stmtIF();
@@ -589,7 +599,19 @@
if (R == null)
{if (true) return (PlanBody)F;}
try {
- stmtLiteral = new InternalActionLiteral(ASSyntax.createStructure(".fork", jason.stdlib.fork.aAnd, (Term)F, (Term)R), curAg);
+ Structure s = ASSyntax.createStructure(".fork", jason.stdlib.fork.aAnd, (Term)F);
+ if (R.toString().startsWith(".fork(and,")) {
+ // if R is another fork and, put they args into this fork
+ InternalActionLiteral ial = (InternalActionLiteral)R.getBodyTerm();
+ if (ial.getIA(curAg) instanceof jason.stdlib.fork) {
+ for (int i=1; i<ial.getArity(); i++) {
+ s.addTerm(ial.getTerm(i));
+ }
+ }
+ } else {
+ s.addTerm(R);
+ }
+ Literal stmtLiteral = new InternalActionLiteral(s, curAg);
stmtLiteral.setSrcInfo( ((Term)F).getSrcInfo() );
{if (true) return new PlanBodyImpl(BodyType.internalAction, stmtLiteral);}
} catch (Exception e) {
@@ -1733,11 +1755,6 @@
finally { jj_save(3, xla); }
}
- final private boolean jj_3R_117() {
- if (jj_3R_19()) return true;
- return false;
- }
-
final private boolean jj_3R_31() {
Token xsp;
xsp = jj_scanpos;
@@ -1748,82 +1765,6 @@
return false;
}
- final private boolean jj_3R_30() {
- if (jj_scan_token(41)) return true;
- return false;
- }
-
- final private boolean jj_3R_29() {
- if (jj_scan_token(40)) return true;
- return false;
- }
-
- final private boolean jj_3R_78() {
- if (jj_scan_token(50)) return true;
- if (jj_3R_55()) return true;
- return false;
- }
-
- final private boolean jj_3R_28() {
- if (jj_scan_token(39)) return true;
- return false;
- }
-
- final private boolean jj_3R_114() {
- if (jj_3R_117()) return true;
- return false;
- }
-
- final private boolean jj_3R_113() {
- if (jj_scan_token(44)) return true;
- if (jj_3R_20()) return true;
- if (jj_scan_token(45)) return true;
- return false;
- }
-
- final private boolean jj_3R_16() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_28()) {
- jj_scanpos = xsp;
- if (jj_3R_29()) {
- jj_scanpos = xsp;
- if (jj_3R_30()) return true;
- }
- }
- xsp = jj_scanpos;
- if (jj_3R_31()) jj_scanpos = xsp;
- if (jj_3R_19()) return true;
- return false;
- }
-
- final private boolean jj_3R_41() {
- if (jj_3R_55()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_78()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3R_112() {
- if (jj_scan_token(39)) return true;
- if (jj_3R_103()) return true;
- return false;
- }
-
- final private boolean jj_3R_111() {
- if (jj_scan_token(40)) return true;
- if (jj_3R_103()) return true;
- return false;
- }
-
- final private boolean jj_3R_23() {
- if (jj_3R_42()) return true;
- return false;
- }
-
final private boolean jj_3R_132() {
if (jj_3R_20()) return true;
return false;
@@ -1870,11 +1811,26 @@
return false;
}
+ final private boolean jj_3R_30() {
+ if (jj_scan_token(41)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_29() {
+ if (jj_scan_token(40)) return true;
+ return false;
+ }
+
final private boolean jj_3R_143() {
if (jj_scan_token(48)) return true;
return false;
}
+ final private boolean jj_3R_28() {
+ if (jj_scan_token(39)) return true;
+ return false;
+ }
+
final private boolean jj_3R_142() {
if (jj_scan_token(47)) return true;
return false;
@@ -1893,29 +1849,32 @@
return false;
}
- final private boolean jj_3R_139() {
+ final private boolean jj_3R_16() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_141()) {
+ if (jj_3R_28()) {
jj_scanpos = xsp;
- if (jj_3R_142()) {
+ if (jj_3R_29()) {
jj_scanpos = xsp;
- if (jj_3R_143()) return true;
+ if (jj_3R_30()) return true;
}
}
+ xsp = jj_scanpos;
+ if (jj_3R_31()) jj_scanpos = xsp;
+ if (jj_3R_19()) return true;
return false;
}
- final private boolean jj_3R_57() {
- if (jj_scan_token(TK_LABEL_AT)) return true;
- return false;
- }
-
- final private boolean jj_3R_46() {
+ final private boolean jj_3R_139() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_57()) jj_scanpos = xsp;
- if (jj_3R_16()) return true;
+ if (jj_3R_141()) {
+ jj_scanpos = xsp;
+ if (jj_3R_142()) {
+ jj_scanpos = xsp;
+ if (jj_3R_143()) return true;
+ }
+ }
return false;
}
@@ -2004,11 +1963,19 @@
return false;
}
- final private boolean jj_3R_45() {
- if (jj_scan_token(36)) return true;
+ final private boolean jj_3R_57() {
+ if (jj_scan_token(TK_LABEL_AT)) return true;
return false;
}
+ final private boolean jj_3R_46() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_57()) jj_scanpos = xsp;
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
final private boolean jj_3R_108() {
if (jj_scan_token(TK_INTMOD)) return true;
return false;
@@ -2085,8 +2052,8 @@
return false;
}
- final private boolean jj_3R_44() {
- if (jj_3R_19()) return true;
+ final private boolean jj_3R_45() {
+ if (jj_scan_token(36)) return true;
return false;
}
@@ -2160,6 +2127,11 @@
return false;
}
+ final private boolean jj_3R_44() {
+ if (jj_3R_19()) return true;
+ return false;
+ }
+
final private boolean jj_3R_86() {
if (jj_scan_token(60)) return true;
return false;
@@ -2299,14 +2271,6 @@
return false;
}
- final private boolean jj_3_1() {
- if (jj_scan_token(TK_BEGIN)) return true;
- if (jj_3R_13()) return true;
- if (jj_scan_token(33)) return true;
- if (jj_3R_14()) return true;
- return false;
- }
-
final private boolean jj_3R_133() {
if (jj_scan_token(TK_ELSE)) return true;
return false;
@@ -2320,11 +2284,6 @@
return false;
}
- final private boolean jj_3R_43() {
- if (jj_scan_token(32)) return true;
- return false;
- }
-
final private boolean jj_3R_67() {
Token xsp;
xsp = jj_scanpos;
@@ -2349,6 +2308,19 @@
return false;
}
+ final private boolean jj_3_1() {
+ if (jj_scan_token(TK_BEGIN)) return true;
+ if (jj_3R_13()) return true;
+ if (jj_scan_token(33)) return true;
+ if (jj_3R_14()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_43() {
+ if (jj_scan_token(32)) return true;
+ return false;
+ }
+
final private boolean jj_3R_59() {
if (jj_3R_67()) return true;
return false;
@@ -2360,12 +2332,6 @@
return false;
}
- final private boolean jj_3R_124() {
- if (jj_scan_token(TK_PAND)) return true;
- if (jj_3R_118()) return true;
- return false;
- }
-
final private boolean jj_3R_52() {
Token xsp;
xsp = jj_scanpos;
@@ -2390,6 +2356,31 @@
return false;
}
+ final private boolean jj_3R_38() {
+ if (jj_scan_token(52)) return true;
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_124() {
+ if (jj_scan_token(TK_PAND)) return true;
+ if (jj_3R_118()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_20() {
+ if (jj_3R_37()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_38()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_102() {
+ if (jj_3R_109()) return true;
+ return false;
+ }
+
final private boolean jj_3R_123() {
if (jj_3R_128()) return true;
return false;
@@ -2405,14 +2396,20 @@
return false;
}
- final private boolean jj_3R_38() {
- if (jj_scan_token(52)) return true;
+ final private boolean jj_3R_120() {
+ if (jj_3R_125()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_3() {
+ if (jj_3R_19()) return true;
+ if (jj_scan_token(34)) return true;
if (jj_3R_20()) return true;
return false;
}
- final private boolean jj_3R_120() {
- if (jj_3R_125()) return true;
+ final private boolean jj_3R_33() {
+ if (jj_scan_token(43)) return true;
return false;
}
@@ -2434,36 +2431,6 @@
return false;
}
- final private boolean jj_3R_20() {
- if (jj_3R_37()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_38()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3R_102() {
- if (jj_3R_109()) return true;
- return false;
- }
-
- final private boolean jj_3R_27() {
- if (jj_3R_46()) return true;
- return false;
- }
-
- final private boolean jj_3_3() {
- if (jj_3R_19()) return true;
- if (jj_scan_token(34)) return true;
- if (jj_3R_20()) return true;
- return false;
- }
-
- final private boolean jj_3R_33() {
- if (jj_scan_token(43)) return true;
- return false;
- }
-
final private boolean jj_3R_32() {
if (jj_scan_token(38)) return true;
return false;
@@ -2500,11 +2467,6 @@
return false;
}
- final private boolean jj_3R_26() {
- if (jj_3R_45()) return true;
- return false;
- }
-
final private boolean jj_3R_69() {
if (jj_3R_42()) return true;
return false;
@@ -2532,12 +2494,6 @@
return false;
}
- final private boolean jj_3R_119() {
- if (jj_scan_token(TK_POR)) return true;
- if (jj_3R_115()) return true;
- return false;
- }
-
final private boolean jj_3R_97() {
if (jj_3R_42()) return true;
return false;
@@ -2570,19 +2526,6 @@
return false;
}
- final private boolean jj_3R_25() {
- if (jj_3R_44()) return true;
- return false;
- }
-
- final private boolean jj_3R_115() {
- if (jj_3R_118()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_119()) jj_scanpos = xsp;
- return false;
- }
-
final private boolean jj_3R_68() {
if (jj_scan_token(32)) return true;
Token xsp;
@@ -2596,33 +2539,6 @@
return false;
}
- final private boolean jj_3R_24() {
- if (jj_3R_43()) return true;
- return false;
- }
-
- final private boolean jj_3R_14() {
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_24()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_25()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_26()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_27()) { jj_scanpos = xsp; break; }
- }
- if (jj_scan_token(0)) return true;
- return false;
- }
-
final private boolean jj_3R_62() {
if (jj_3R_42()) return true;
return false;
@@ -2642,11 +2558,6 @@
return false;
}
- final private boolean jj_3R_116() {
- if (jj_3R_109()) return true;
- return false;
- }
-
final private boolean jj_3R_91() {
if (jj_scan_token(50)) return true;
if (jj_3R_66()) return true;
@@ -2658,6 +2569,11 @@
return false;
}
+ final private boolean jj_3R_27() {
+ if (jj_3R_46()) return true;
+ return false;
+ }
+
final private boolean jj_3R_60() {
if (jj_scan_token(VAR)) return true;
return false;
@@ -2696,21 +2612,27 @@
return false;
}
- final private boolean jj_3R_109() {
- if (jj_3R_115()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(43)) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3R_116()) jj_scanpos = xsp;
+ final private boolean jj_3R_26() {
+ if (jj_3R_45()) return true;
return false;
}
+ final private boolean jj_3R_25() {
+ if (jj_3R_44()) return true;
+ return false;
+ }
+
final private boolean jj_3R_65() {
if (jj_3R_20()) return true;
return false;
}
+ final private boolean jj_3R_119() {
+ if (jj_scan_token(TK_POR)) return true;
+ if (jj_3R_115()) return true;
+ return false;
+ }
+
final private boolean jj_3R_64() {
if (jj_3R_68()) return true;
return false;
@@ -2721,8 +2643,8 @@
return false;
}
- final private boolean jj_3R_48() {
- if (jj_scan_token(42)) return true;
+ final private boolean jj_3R_24() {
+ if (jj_3R_43()) return true;
return false;
}
@@ -2739,6 +2661,106 @@
return false;
}
+ final private boolean jj_3R_115() {
+ if (jj_3R_118()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_119()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_14() {
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_24()) { jj_scanpos = xsp; break; }
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_25()) { jj_scanpos = xsp; break; }
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_26()) { jj_scanpos = xsp; break; }
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_27()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_scan_token(0)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_117() {
+ if (jj_3R_19()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_116() {
+ if (jj_3R_109()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_78() {
+ if (jj_scan_token(50)) return true;
+ if (jj_3R_55()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_114() {
+ if (jj_3R_117()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_113() {
+ if (jj_scan_token(44)) return true;
+ if (jj_3R_20()) return true;
+ if (jj_scan_token(45)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_41() {
+ if (jj_3R_55()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_78()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_112() {
+ if (jj_scan_token(39)) return true;
+ if (jj_3R_103()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_109() {
+ if (jj_3R_115()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(43)) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_116()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_111() {
+ if (jj_scan_token(40)) return true;
+ if (jj_3R_103()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_48() {
+ if (jj_scan_token(42)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_23() {
+ if (jj_3R_42()) return true;
+ return false;
+ }
+
final private boolean jj_3R_47() {
if (jj_scan_token(36)) return true;
return false;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|