From: <jen...@us...> - 2008-02-10 16:08:56
|
Revision: 534 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=534&view=rev Author: jenslehmann Date: 2008-02-10 08:08:51 -0800 (Sun, 10 Feb 2008) Log Message: ----------- extended list support of Prolog parser Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/parser/PrologParser.java trunk/src/dl-learner/org/dllearner/parser/prolog.jj Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParser.java 2008-02-10 10:54:40 UTC (rev 533) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParser.java 2008-02-10 16:08:51 UTC (rev 534) @@ -255,7 +255,7 @@ final public org.dllearner.prolog.List list() throws ParseException { java.util.ArrayList content = null; - org.dllearner.prolog.Term head; + org.dllearner.prolog.Term head, tmp; org.dllearner.prolog.List l; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 24: @@ -264,12 +264,12 @@ break; default: jj_la1[7] = jj_gen; - if (jj_2_7(3)) { + if (jj_2_8(3)) { jj_consume_token(25); head = term(); jj_consume_token(26); {if (true) return new org.dllearner.prolog.List(head, null);} - } else if (jj_2_8(3)) { + } else if (jj_2_9(3)) { jj_consume_token(25); head = term(); jj_consume_token(27); @@ -277,8 +277,31 @@ jj_consume_token(26); {if (true) return new org.dllearner.prolog.List(head, l);} } else { - jj_consume_token(-1); - throw new ParseException(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case 25: + content = new java.util.ArrayList(); + jj_consume_token(25); + label_4: + while (true) { + if (jj_2_7(2)) { + ; + } else { + break label_4; + } + tmp = term(); + content.add(tmp); + jj_consume_token(21); + } + tmp = term(); + content.add(tmp); + jj_consume_token(26); + {if (true) return org.dllearner.prolog.List.compose(content);} + break; + default: + jj_la1[8] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } } } throw new Error("Missing return statement in function"); @@ -340,27 +363,40 @@ finally { jj_save(7, xla); } } - final private boolean jj_3R_4() { + final private boolean jj_2_9(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_9(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(8, xla); } + } + + final private boolean jj_3R_5() { if (jj_scan_token(OPERATOR)) return true; return false; } - final private boolean jj_3R_12() { - if (jj_3R_14()) return true; + final private boolean jj_3_7() { + if (jj_3R_9()) return true; + if (jj_scan_token(21)) return true; return false; } - final private boolean jj_3R_11() { + final private boolean jj_3R_13() { + if (jj_3R_15()) return true; + return false; + } + + final private boolean jj_3R_12() { if (jj_scan_token(STRINGCONSTANT)) return true; return false; } - final private boolean jj_3R_10() { + final private boolean jj_3R_11() { if (jj_scan_token(DOUBLE)) return true; return false; } - final private boolean jj_3R_9() { + final private boolean jj_3R_10() { if (jj_scan_token(VAR)) return true; return false; } @@ -370,28 +406,40 @@ return false; } + final private boolean jj_3R_18() { + if (jj_scan_token(25)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_7()) { jj_scanpos = xsp; break; } + } + if (jj_3R_9()) return true; + if (jj_scan_token(26)) return true; + return false; + } + final private boolean jj_3_5() { if (jj_scan_token(IDENTIFIER)) return true; if (jj_scan_token(22)) return true; - if (jj_3R_13()) return true; + if (jj_3R_14()) return true; if (jj_scan_token(23)) return true; return false; } - final private boolean jj_3R_5() { + final private boolean jj_3R_6() { Token xsp; xsp = jj_scanpos; if (jj_3_5()) { jj_scanpos = xsp; if (jj_3_6()) { jj_scanpos = xsp; - if (jj_3R_9()) { - jj_scanpos = xsp; if (jj_3R_10()) { jj_scanpos = xsp; if (jj_3R_11()) { jj_scanpos = xsp; - if (jj_3R_12()) return true; + if (jj_3R_12()) { + jj_scanpos = xsp; + if (jj_3R_13()) return true; } } } @@ -400,81 +448,84 @@ return false; } - final private boolean jj_3_8() { + final private boolean jj_3_9() { if (jj_scan_token(25)) return true; - if (jj_3R_8()) return true; + if (jj_3R_9()) return true; if (jj_scan_token(27)) return true; - if (jj_3R_14()) return true; + if (jj_3R_15()) return true; if (jj_scan_token(26)) return true; return false; } - final private boolean jj_3_7() { + final private boolean jj_3_8() { if (jj_scan_token(25)) return true; - if (jj_3R_8()) return true; + if (jj_3R_9()) return true; if (jj_scan_token(26)) return true; return false; } - final private boolean jj_3R_16() { + final private boolean jj_3R_17() { if (jj_scan_token(24)) return true; return false; } - final private boolean jj_3R_14() { + final private boolean jj_3R_15() { Token xsp; xsp = jj_scanpos; - if (jj_3R_16()) { + if (jj_3R_17()) { jj_scanpos = xsp; - if (jj_3_7()) { + if (jj_3_8()) { jj_scanpos = xsp; - if (jj_3_8()) return true; + if (jj_3_9()) { + jj_scanpos = xsp; + if (jj_3R_18()) return true; } } + } return false; } final private boolean jj_3_4() { - if (jj_3R_5()) return true; + if (jj_3R_6()) return true; return false; } - final private boolean jj_3R_15() { + final private boolean jj_3R_16() { if (jj_scan_token(21)) return true; - if (jj_3R_8()) return true; + if (jj_3R_9()) return true; return false; } final private boolean jj_3_3() { - if (jj_3R_5()) return true; - if (jj_3R_7()) return true; + if (jj_3R_6()) return true; + if (jj_3R_8()) return true; return false; } final private boolean jj_3_2() { - if (jj_3R_5()) return true; if (jj_3R_6()) return true; - if (jj_3R_5()) return true; + if (jj_3R_7()) return true; + if (jj_3R_6()) return true; return false; } - final private boolean jj_3R_13() { - if (jj_3R_8()) return true; + final private boolean jj_3R_14() { + if (jj_3R_9()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_15()) { jj_scanpos = xsp; break; } + if (jj_3R_16()) { jj_scanpos = xsp; break; } } return false; } final private boolean jj_3_1() { - if (jj_3R_4()) return true; if (jj_3R_5()) return true; + if (jj_3R_6()) return true; return false; } - final private boolean jj_3R_8() { + final private boolean jj_3R_9() { Token xsp; xsp = jj_scanpos; if (jj_3_1()) { @@ -490,12 +541,12 @@ return false; } - final private boolean jj_3R_7() { + final private boolean jj_3R_8() { if (jj_scan_token(OPERATOR)) return true; return false; } - final private boolean jj_3R_6() { + final private boolean jj_3R_7() { if (jj_scan_token(OPERATOR)) return true; return false; } @@ -509,15 +560,15 @@ public boolean lookingAhead = false; private boolean jj_semLA; private int jj_gen; - final private int[] jj_la1 = new int[8]; + final private int[] jj_la1 = new int[9]; static private int[] jj_la1_0; static { jj_la1_0(); } private static void jj_la1_0() { - jj_la1_0 = new int[] {0x2000,0x80000,0x200000,0x400000,0x2080,0x3001900,0x200000,0x1000000,}; + jj_la1_0 = new int[] {0x2000,0x80000,0x200000,0x400000,0x2080,0x3001900,0x200000,0x1000000,0x2000000,}; } - final private JJCalls[] jj_2_rtns = new JJCalls[8]; + final private JJCalls[] jj_2_rtns = new JJCalls[9]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -530,7 +581,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 9; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -543,7 +594,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 9; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -553,7 +604,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 9; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -563,7 +614,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 9; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -572,7 +623,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 9; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -581,7 +632,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 9; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -697,7 +748,7 @@ la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 8; i++) { + for (int i = 0; i < 9; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { @@ -731,7 +782,7 @@ final private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 8; i++) { + for (int i = 0; i < 9; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -746,6 +797,7 @@ case 5: jj_3_6(); break; case 6: jj_3_7(); break; case 7: jj_3_8(); break; + case 8: jj_3_9(); break; } } p = p.next; Modified: trunk/src/dl-learner/org/dllearner/parser/prolog.jj =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/prolog.jj 2008-02-10 10:54:40 UTC (rev 533) +++ trunk/src/dl-learner/org/dllearner/parser/prolog.jj 2008-02-10 16:08:51 UTC (rev 534) @@ -208,10 +208,13 @@ org.dllearner.prolog.List list() : { java.util.ArrayList content = null; - org.dllearner.prolog.Term head; + org.dllearner.prolog.Term head, tmp; org.dllearner.prolog.List l; }{ "[]" { return new org.dllearner.prolog.List(); } | LOOKAHEAD(3) "[" head = term() "]" { return new org.dllearner.prolog.List(head, null); } | LOOKAHEAD(3) "[" head = term() "|" l = list() "]" { return new org.dllearner.prolog.List(head, l); } -} + | {content = new java.util.ArrayList(); } + "[" ( LOOKAHEAD(2) tmp=term() {content.add(tmp);} ",")* tmp=term() {content.add(tmp);} "]" + { return org.dllearner.prolog.List.compose(content); } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |