You can subscribe to this list here.
| 2010 |
Jan
|
Feb
|
Mar
(97) |
Apr
(160) |
May
(139) |
Jun
(17) |
Jul
(51) |
Aug
(39) |
Sep
(21) |
Oct
(45) |
Nov
(60) |
Dec
(110) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2011 |
Jan
(34) |
Feb
(84) |
Mar
(154) |
Apr
(81) |
May
(107) |
Jun
(33) |
Jul
(30) |
Aug
(49) |
Sep
(68) |
Oct
(96) |
Nov
(39) |
Dec
(23) |
| 2012 |
Jan
(45) |
Feb
(53) |
Mar
(39) |
Apr
(32) |
May
(62) |
Jun
(48) |
Jul
(42) |
Aug
(61) |
Sep
(56) |
Oct
(48) |
Nov
(57) |
Dec
(16) |
| 2013 |
Jan
(52) |
Feb
(10) |
Mar
(20) |
Apr
(43) |
May
(37) |
Jun
(56) |
Jul
(53) |
Aug
(15) |
Sep
(41) |
Oct
(47) |
Nov
(75) |
Dec
(63) |
| 2014 |
Jan
(39) |
Feb
(80) |
Mar
(41) |
Apr
(47) |
May
(43) |
Jun
(38) |
Jul
(15) |
Aug
|
Sep
(4) |
Oct
(2) |
Nov
(1) |
Dec
(3) |
| 2015 |
Jan
(1) |
Feb
(3) |
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(11) |
Dec
(7) |
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <iam...@us...> - 2010-03-23 18:06:19
|
Revision: 1340
http://eulergui.svn.sourceforge.net/eulergui/?rev=1340&view=rev
Author: iamlolive
Date: 2010-03-23 18:06:05 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
useless commit. i am checking my settings.xml.
Modified Paths:
--------------
trunk/eulergui/src/main/java/n3_project/Project.java
Modified: trunk/eulergui/src/main/java/n3_project/Project.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/Project.java 2010-03-23 06:30:31 UTC (rev 1339)
+++ trunk/eulergui/src/main/java/n3_project/Project.java 2010-03-23 18:06:05 UTC (rev 1340)
@@ -2,4 +2,6 @@
public class Project extends eulergui.project.Project {
+
+ /**/
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2010-03-23 06:30:41
|
Revision: 1339
http://eulergui.svn.sourceforge.net/eulergui/?rev=1339&view=rev
Author: luc_peuvrier
Date: 2010-03-23 06:30:31 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
added management of comment ending by end of file in n3 files
Modified Paths:
--------------
trunk/eulergui/src/main/parser4j/resources/n3.2.bnf4
trunk/eulergui/src/main/resources/parser4j/n3-parser.data
trunk/eulergui/src/target/generated-resources/parser4j/n3-grammardef.txt
trunk/eulergui/src/target/generated-resources/parser4j/n3-grammartree.txt
trunk/eulergui/src/target/generated-resources/parser4j/n3.html
trunk/eulergui/src/target/generated-resources/parser4j/n3_lexgen.txt
trunk/eulergui/src/test/java/eulergui/parser/n3/impl/parser4j/service/bugs/TestN3ForBugs.java
Added Paths:
-----------
trunk/eulergui/test/parser/n3/impl/parser4j/bugs/end_of_file_comment.n3
Modified: trunk/eulergui/src/main/parser4j/resources/n3.2.bnf4
===================================================================
--- trunk/eulergui/src/main/parser4j/resources/n3.2.bnf4 2010-03-23 06:17:47 UTC (rev 1338)
+++ trunk/eulergui/src/main/parser4j/resources/n3.2.bnf4 2010-03-23 06:30:31 UTC (rev 1339)
@@ -256,9 +256,13 @@
;
wsElt : [\u0000- ]
- | '#' chars_in_comment_opt '\n'
+ | '#' chars_in_comment_opt eol_opt
;
+eol_opt:
+ | '\n'
+ ;
+
chars_in_comment_opt :
| chars_in_comment
;
Modified: trunk/eulergui/src/main/resources/parser4j/n3-parser.data
===================================================================
(Binary files differ)
Modified: trunk/eulergui/src/target/generated-resources/parser4j/n3-grammardef.txt
===================================================================
--- trunk/eulergui/src/target/generated-resources/parser4j/n3-grammardef.txt 2010-03-23 06:17:47 UTC (rev 1338)
+++ trunk/eulergui/src/target/generated-resources/parser4j/n3-grammardef.txt 2010-03-23 06:30:31 UTC (rev 1339)
@@ -665,12 +665,23 @@
begin of StatementDef NON_TERMINAL, match mgr: null, nt defined: wsElt_1_1, non terminal identifier: chars_in_comment_opt
soon of wsElt_1
end of NON_TERMINAL
- begin of StatementDef TERMINAL_CHAR, match mgr: null, nt defined: wsElt_1_2, terminal character: 0Xa
+ begin of StatementDef NON_TERMINAL, match mgr: null, nt defined: wsElt_1_2, non terminal identifier: eol_opt
root
- end of TERMINAL_CHAR
+ end of NON_TERMINAL
end of CONCAT
end of ALTERNATIVE
end of RuleDef, non terminal defined: wsElt, is token: false
+ begin of RuleDef, non terminal defined: eol_opt, is token: false
+ begin of StatementDef ALTERNATIVE, match mgr: null, nt defined: eol_opt
+ root
+ begin of StatementDef EMPTY, match mgr: null, nt defined: eol_opt_0
+ root
+ end of EMPTY
+ begin of StatementDef TERMINAL_CHAR, match mgr: null, nt defined: eol_opt_1, terminal character: 0Xa
+ root
+ end of TERMINAL_CHAR
+ end of ALTERNATIVE
+ end of RuleDef, non terminal defined: eol_opt, is token: false
begin of RuleDef, non terminal defined: chars_in_comment_opt, is token: false
begin of StatementDef ALTERNATIVE, match mgr: null, nt defined: chars_in_comment_opt
root
Modified: trunk/eulergui/src/target/generated-resources/parser4j/n3-grammartree.txt
===================================================================
--- trunk/eulergui/src/target/generated-resources/parser4j/n3-grammartree.txt 2010-03-23 06:17:47 UTC (rev 1338)
+++ trunk/eulergui/src/target/generated-resources/parser4j/n3-grammartree.txt 2010-03-23 06:30:31 UTC (rev 1339)
@@ -151,6 +151,9 @@
{ Match2StringValueConcat }
dtlang_2_0 :(concat) ws (as white space) & double_caret
{ MatchEqu }
+eol_opt :(alternative) eol_opt_0 | eol_opt_1
+eol_opt_0 :(empty)
+eol_opt_1 :(terminal char) \x0A
$[exclam] :(terminal char) '!'
existential :(concat) existential_0 & symbol_csl
{ MatchFor }
@@ -481,9 +484,8 @@
$[ws] :(alternative) ws_0 | ws_list
wsElt :(alternative) wsElt_0 | wsElt_1
wsElt_0 :(char range) ['\x00 thru ' '']
-wsElt_1 :(concat) wsElt_1_0 & chars_in_comment_opt & wsElt_1_2
+wsElt_1 :(concat) wsElt_1_0 & chars_in_comment_opt & eol_opt
wsElt_1_0 :(terminal char) '#'
-wsElt_1_2 :(terminal char) \x0A
ws_0 :(empty)
ws_list :(alternative) wsElt | ws_list_1
ws_list_1 :(concat) ws_list & wsElt
Modified: trunk/eulergui/src/target/generated-resources/parser4j/n3.html
===================================================================
--- trunk/eulergui/src/target/generated-resources/parser4j/n3.html 2010-03-23 06:17:47 UTC (rev 1338)
+++ trunk/eulergui/src/target/generated-resources/parser4j/n3.html 2010-03-23 06:30:31 UTC (rev 1339)
@@ -80,10 +80,15 @@
<ul>
<li>by [0X0 - 0X9] goto <a href="#lexstate34">state #34</a></li>
<li>by [0Xa - 0Xa] goto <a href="#lexstate35">state #35</a></li>
-<li>by [0Xb - 0Xffff] goto <a href="#lexstate36">state #36</a></li>
+<li>by [0Xb - ' '] goto <a href="#lexstate36">state #36</a></li>
+<li>by ['!' - '"'] goto <a href="#lexstate37">state #37</a></li>
+<li>by ['#' - '#'] goto <a href="#lexstate38">state #38</a></li>
+<li>by ['$' - 0Xffff] goto <a href="#lexstate37">state #37</a></li>
</ul>
match:<br>
<ul>
+<li>
+ws</li>
</ul>
<a name="lexstate5"></a><span style="font-weight: bold; text-decoration: underline;">state #5</span><br><br>
goto by terminal:<br>
@@ -104,10 +109,10 @@
<a name="lexstate7"></a><span style="font-weight: bold; text-decoration: underline;">state #7</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['.' - '.'] goto <a href="#lexstate37">state #37</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate38">state #38</a></li>
-<li>by ['E' - 'E'] goto <a href="#lexstate39">state #39</a></li>
-<li>by ['e' - 'e'] goto <a href="#lexstate40">state #40</a></li>
+<li>by ['.' - '.'] goto <a href="#lexstate39">state #39</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate40">state #40</a></li>
+<li>by ['E' - 'E'] goto <a href="#lexstate41">state #41</a></li>
+<li>by ['e' - 'e'] goto <a href="#lexstate42">state #42</a></li>
</ul>
match:<br>
<ul>
@@ -117,11 +122,11 @@
<a name="lexstate8"></a><span style="font-weight: bold; text-decoration: underline;">state #8</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate41">state #41</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate42">state #42</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate43">state #43</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate44">state #44</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate45">state #45</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate43">state #43</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate44">state #44</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate45">state #45</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate46">state #46</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate47">state #47</a></li>
</ul>
match:<br>
<ul>
@@ -133,10 +138,10 @@
<a name="lexstate9"></a><span style="font-weight: bold; text-decoration: underline;">state #9</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - '<'] goto <a href="#lexstate46">state #46</a></li>
-<li>by ['=' - '='] goto <a href="#lexstate47">state #47</a></li>
-<li>by ['>' - '>'] goto <a href="#lexstate48">state #48</a></li>
-<li>by ['?' - 0Xffff] goto <a href="#lexstate49">state #49</a></li>
+<li>by [0X0 - '<'] goto <a href="#lexstate48">state #48</a></li>
+<li>by ['=' - '='] goto <a href="#lexstate49">state #49</a></li>
+<li>by ['>' - '>'] goto <a href="#lexstate50">state #50</a></li>
+<li>by ['?' - 0Xffff] goto <a href="#lexstate51">state #51</a></li>
</ul>
match:<br>
<ul>
@@ -144,7 +149,7 @@
<a name="lexstate10"></a><span style="font-weight: bold; text-decoration: underline;">state #10</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['>' - '>'] goto <a href="#lexstate50">state #50</a></li>
+<li>by ['>' - '>'] goto <a href="#lexstate52">state #52</a></li>
</ul>
match:<br>
<ul>
@@ -154,9 +159,9 @@
<a name="lexstate11"></a><span style="font-weight: bold; text-decoration: underline;">state #11</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['A' - 'Z'] goto <a href="#lexstate51">state #51</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate52">state #52</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate53">state #53</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate53">state #53</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate54">state #54</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate55">state #55</a></li>
</ul>
match:<br>
<ul>
@@ -164,15 +169,15 @@
<a name="lexstate12"></a><span style="font-weight: bold; text-decoration: underline;">state #12</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['a' - 'a'] goto <a href="#lexstate54">state #54</a></li>
-<li>by ['b' - 'b'] goto <a href="#lexstate55">state #55</a></li>
-<li>by ['f' - 'f'] goto <a href="#lexstate56">state #56</a></li>
-<li>by ['h' - 'h'] goto <a href="#lexstate57">state #57</a></li>
-<li>by ['i' - 'i'] goto <a href="#lexstate58">state #58</a></li>
-<li>by ['k' - 'k'] goto <a href="#lexstate59">state #59</a></li>
-<li>by ['o' - 'o'] goto <a href="#lexstate60">state #60</a></li>
-<li>by ['p' - 'p'] goto <a href="#lexstate61">state #61</a></li>
-<li>by ['t' - 't'] goto <a href="#lexstate62">state #62</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate56">state #56</a></li>
+<li>by ['b' - 'b'] goto <a href="#lexstate57">state #57</a></li>
+<li>by ['f' - 'f'] goto <a href="#lexstate58">state #58</a></li>
+<li>by ['h' - 'h'] goto <a href="#lexstate59">state #59</a></li>
+<li>by ['i' - 'i'] goto <a href="#lexstate60">state #60</a></li>
+<li>by ['k' - 'k'] goto <a href="#lexstate61">state #61</a></li>
+<li>by ['o' - 'o'] goto <a href="#lexstate62">state #62</a></li>
+<li>by ['p' - 'p'] goto <a href="#lexstate63">state #63</a></li>
+<li>by ['t' - 't'] goto <a href="#lexstate64">state #64</a></li>
</ul>
match:<br>
<ul>
@@ -182,12 +187,12 @@
<a name="lexstate13"></a><span style="font-weight: bold; text-decoration: underline;">state #13</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate63">state #63</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate65">state #65</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate70">state #70</a></li>
</ul>
match:<br>
<ul>
@@ -201,7 +206,7 @@
<a name="lexstate14"></a><span style="font-weight: bold; text-decoration: underline;">state #14</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['^' - '^'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['^' - '^'] goto <a href="#lexstate71">state #71</a></li>
</ul>
match:<br>
<ul>
@@ -211,12 +216,12 @@
<a name="lexstate15"></a><span style="font-weight: bold; text-decoration: underline;">state #15</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate63">state #63</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate65">state #65</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate70">state #70</a></li>
</ul>
match:<br>
<ul>
@@ -230,12 +235,12 @@
<a name="lexstate16"></a><span style="font-weight: bold; text-decoration: underline;">state #16</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -253,12 +258,12 @@
<a name="lexstate17"></a><span style="font-weight: bold; text-decoration: underline;">state #17</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -274,13 +279,13 @@
<a name="lexstate18"></a><span style="font-weight: bold; text-decoration: underline;">state #18</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'a'] goto <a href="#lexstate72">state #72</a></li>
-<li>by ['b' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate74">state #74</a></li>
+<li>by ['b' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -296,12 +301,12 @@
<a name="lexstate19"></a><span style="font-weight: bold; text-decoration: underline;">state #19</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -317,13 +322,13 @@
<a name="lexstate20"></a><span style="font-weight: bold; text-decoration: underline;">state #20</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'a'] goto <a href="#lexstate73">state #73</a></li>
-<li>by ['b' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate75">state #75</a></li>
+<li>by ['b' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -339,14 +344,14 @@
<a name="lexstate21"></a><span style="font-weight: bold; text-decoration: underline;">state #21</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'r'] goto <a href="#lexstate71">state #71</a></li>
-<li>by ['s' - 's'] goto <a href="#lexstate74">state #74</a></li>
-<li>by ['t' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'r'] goto <a href="#lexstate73">state #73</a></li>
+<li>by ['s' - 's'] goto <a href="#lexstate76">state #76</a></li>
+<li>by ['t' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -362,12 +367,12 @@
<a name="lexstate22"></a><span style="font-weight: bold; text-decoration: underline;">state #22</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -383,14 +388,14 @@
<a name="lexstate23"></a><span style="font-weight: bold; text-decoration: underline;">state #23</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'e'] goto <a href="#lexstate71">state #71</a></li>
-<li>by ['f' - 'f'] goto <a href="#lexstate75">state #75</a></li>
-<li>by ['g' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'e'] goto <a href="#lexstate73">state #73</a></li>
+<li>by ['f' - 'f'] goto <a href="#lexstate77">state #77</a></li>
+<li>by ['g' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -406,12 +411,12 @@
<a name="lexstate24"></a><span style="font-weight: bold; text-decoration: underline;">state #24</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -427,14 +432,14 @@
<a name="lexstate25"></a><span style="font-weight: bold; text-decoration: underline;">state #25</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'q'] goto <a href="#lexstate71">state #71</a></li>
-<li>by ['r' - 'r'] goto <a href="#lexstate76">state #76</a></li>
-<li>by ['s' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'q'] goto <a href="#lexstate73">state #73</a></li>
+<li>by ['r' - 'r'] goto <a href="#lexstate78">state #78</a></li>
+<li>by ['s' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -450,12 +455,12 @@
<a name="lexstate26"></a><span style="font-weight: bold; text-decoration: underline;">state #26</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate70">state #70</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate64">state #64</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate66">state #66</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate67">state #67</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate71">state #71</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate72">state #72</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate66">state #66</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate68">state #68</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate69">state #69</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate73">state #73</a></li>
</ul>
match:<br>
<ul>
@@ -482,21 +487,26 @@
<a name="lexstate28"></a><span style="font-weight: bold; text-decoration: underline;">state #28</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - 0X9] goto <a href="#lexstate77">state #77</a></li>
-<li>by [0Xa - 0Xa] goto <a href="#lexstate78">state #78</a></li>
-<li>by [0Xb - 0Xffff] goto <a href="#lexstate79">state #79</a></li>
+<li>by [0X0 - 0X9] goto <a href="#lexstate79">state #79</a></li>
+<li>by [0Xa - 0Xa] goto <a href="#lexstate80">state #80</a></li>
+<li>by [0Xb - ' '] goto <a href="#lexstate81">state #81</a></li>
+<li>by ['!' - '"'] goto <a href="#lexstate82">state #82</a></li>
+<li>by ['#' - '#'] goto <a href="#lexstate83">state #83</a></li>
+<li>by ['$' - 0Xffff] goto <a href="#lexstate82">state #82</a></li>
</ul>
match:<br>
<ul>
+<li>
+ws</li>
</ul>
<a name="lexstate29"></a><span style="font-weight: bold; text-decoration: underline;">state #29</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - '!'] goto <a href="#lexstate80">state #80</a></li>
-<li>by ['"' - '"'] goto <a href="#lexstate81">state #81</a></li>
-<li>by ['#' - '['] goto <a href="#lexstate82">state #82</a></li>
-<li>by ['\' - '\'] goto <a href="#lexstate83">state #83</a></li>
-<li>by [']' - 0Xffff] goto <a href="#lexstate84">state #84</a></li>
+<li>by [0X0 - '!'] goto <a href="#lexstate84">state #84</a></li>
+<li>by ['"' - '"'] goto <a href="#lexstate85">state #85</a></li>
+<li>by ['#' - '['] goto <a href="#lexstate86">state #86</a></li>
+<li>by ['\' - '\'] goto <a href="#lexstate87">state #87</a></li>
+<li>by [']' - 0Xffff] goto <a href="#lexstate88">state #88</a></li>
</ul>
match:<br>
<ul>
@@ -504,7 +514,7 @@
<a name="lexstate30"></a><span style="font-weight: bold; text-decoration: underline;">state #30</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['"' - '"'] goto <a href="#lexstate85">state #85</a></li>
+<li>by ['"' - '"'] goto <a href="#lexstate89">state #89</a></li>
</ul>
match:<br>
<ul>
@@ -514,11 +524,11 @@
<a name="lexstate31"></a><span style="font-weight: bold; text-decoration: underline;">state #31</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - '!'] goto <a href="#lexstate80">state #80</a></li>
-<li>by ['"' - '"'] goto <a href="#lexstate81">state #81</a></li>
-<li>by ['#' - '['] goto <a href="#lexstate82">state #82</a></li>
-<li>by ['\' - '\'] goto <a href="#lexstate83">state #83</a></li>
-<li>by [']' - 0Xffff] goto <a href="#lexstate84">state #84</a></li>
+<li>by [0X0 - '!'] goto <a href="#lexstate84">state #84</a></li>
+<li>by ['"' - '"'] goto <a href="#lexstate85">state #85</a></li>
+<li>by ['#' - '['] goto <a href="#lexstate86">state #86</a></li>
+<li>by ['\' - '\'] goto <a href="#lexstate87">state #87</a></li>
+<li>by [']' - 0Xffff] goto <a href="#lexstate88">state #88</a></li>
</ul>
match:<br>
<ul>
@@ -526,19 +536,19 @@
<a name="lexstate32"></a><span style="font-weight: bold; text-decoration: underline;">state #32</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['"' - '"'] goto <a href="#lexstate86">state #86</a></li>
-<li>by [''' - '''] goto <a href="#lexstate87">state #87</a></li>
-<li>by ['0' - '0'] goto <a href="#lexstate88">state #88</a></li>
-<li>by ['U' - 'U'] goto <a href="#lexstate89">state #89</a></li>
-<li>by ['\' - '\'] goto <a href="#lexstate90">state #90</a></li>
-<li>by ['a' - 'a'] goto <a href="#lexstate91">state #91</a></li>
-<li>by ['b' - 'b'] goto <a href="#lexstate92">state #92</a></li>
-<li>by ['f' - 'f'] goto <a href="#lexstate93">state #93</a></li>
-<li>by ['n' - 'n'] goto <a href="#lexstate94">state #94</a></li>
-<li>by ['r' - 'r'] goto <a href="#lexstate95">state #95</a></li>
-<li>by ['t' - 't'] goto <a href="#lexstate96">state #96</a></li>
-<li>by ['u' - 'u'] goto <a href="#lexstate97">state #97</a></li>
-<li>by ['v' - 'v'] goto <a href="#lexstate98">state #98</a></li>
+<li>by ['"' - '"'] goto <a href="#lexstate90">state #90</a></li>
+<li>by [''' - '''] goto <a href="#lexstate91">state #91</a></li>
+<li>by ['0' - '0'] goto <a href="#lexstate92">state #92</a></li>
+<li>by ['U' - 'U'] goto <a href="#lexstate93">state #93</a></li>
+<li>by ['\' - '\'] goto <a href="#lexstate94">state #94</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate95">state #95</a></li>
+<li>by ['b' - 'b'] goto <a href="#lexstate96">state #96</a></li>
+<li>by ['f' - 'f'] goto <a href="#lexstate97">state #97</a></li>
+<li>by ['n' - 'n'] goto <a href="#lexstate98">state #98</a></li>
+<li>by ['r' - 'r'] goto <a href="#lexstate99">state #99</a></li>
+<li>by ['t' - 't'] goto <a href="#lexstate100">state #100</a></li>
+<li>by ['u' - 'u'] goto <a href="#lexstate101">state #101</a></li>
+<li>by ['v' - 'v'] goto <a href="#lexstate102">state #102</a></li>
</ul>
match:<br>
<ul>
@@ -546,11 +556,11 @@
<a name="lexstate33"></a><span style="font-weight: bold; text-decoration: underline;">state #33</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - '!'] goto <a href="#lexstate80">state #80</a></li>
-<li>by ['"' - '"'] goto <a href="#lexstate81">state #81</a></li>
-<li>by ['#' - '['] goto <a href="#lexstate82">state #82</a></li>
-<li>by ['\' - '\'] goto <a href="#lexstate83">state #83</a></li>
-<li>by [']' - 0Xffff] goto <a href="#lexstate84">state #84</a></li>
+<li>by [0X0 - '!'] goto <a href="#lexstate84">state #84</a></li>
+<li>by ['"' - '"'] goto <a href="#lexstate85">state #85</a></li>
+<li>by ['#' - '['] goto <a href="#lexstate86">state #86</a></li>
+<li>by ['\' - '\'] goto <a href="#lexstate87">state #87</a></li>
+<li>by [']' - 0Xffff] goto <a href="#lexstate88">state #88</a></li>
</ul>
match:<br>
<ul>
@@ -558,12 +568,17 @@
<a name="lexstate34"></a><span style="font-weight: bold; text-decoration: underline;">state #34</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - 0X9] goto <a href="#lexstate99">state #99</a></li>
+<li>by [0X0 - 0X9] goto <a href="#lexstate103">state #103</a></li>
<li>by [0Xa - 0Xa] goto <a href="#lexstate35">state #35</a></li>
-<li>by [0Xb - 0Xffff] goto <a href="#lexstate100">state #100</a></li>
+<li>by [0Xb - ' '] goto <a href="#lexstate104">state #104</a></li>
+<li>by ['!' - '"'] goto <a href="#lexstate105">state #105</a></li>
+<li>by ['#' - '#'] goto <a href="#lexstate106">state #106</a></li>
+<li>by ['$' - 0Xffff] goto <a href="#lexstate105">state #105</a></li>
</ul>
match:<br>
<ul>
+<li>
+ws</li>
</ul>
<a name="lexstate35"></a><span style="font-weight: bold; text-decoration: underline;">state #35</span><br><br>
goto by terminal:<br>
@@ -579,42 +594,54 @@
<a name="lexstate36"></a><span style="font-weight: bold; text-decoration: underline;">state #36</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - 0X9] goto <a href="#lexstate99">state #99</a></li>
+<li>by [0X0 - 0X9] goto <a href="#lexstate103">state #103</a></li>
<li>by [0Xa - 0Xa] goto <a href="#lexstate35">state #35</a></li>
-<li>by [0Xb - 0Xffff] goto <a href="#lexstate100">state #100</a></li>
+<li>by [0Xb - ' '] goto <a href="#lexstate104">state #104</a></li>
+<li>by ['!' - '"'] goto <a href="#lexstate105">state #105</a></li>
+<li>by ['#' - '#'] goto <a href="#lexstate106">state #106</a></li>
+<li>by ['$' - 0Xffff] goto <a href="#lexstate105">state #105</a></li>
</ul>
match:<br>
<ul>
+<li>
+ws</li>
</ul>
<a name="lexstate37"></a><span style="font-weight: bold; text-decoration: underline;">state #37</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['0' - '9'] goto <a href="#lexstate101">state #101</a></li>
-<li>by ['E' - 'E'] goto <a href="#lexstate39">state #39</a></li>
-<li>by ['e' - 'e'] goto <a href="#lexstate40">state #40</a></li>
+<li>by [0X0 - 0X9] goto <a href="#lexstate103">state #103</a></li>
+<li>by [0Xa - 0Xa] goto <a href="#lexstate35">state #35</a></li>
+<li>by [0Xb - ' '] goto <a href="#lexstate104">state #104</a></li>
+<li>by ['!' - '"'] goto <a href="#lexstate105">state #105</a></li>
+<li>by ['#' - '#'] goto <a href="#lexstate106">state #106</a></li>
+<li>by ['$' - 0Xffff] goto <a href="#lexstate105">state #105</a></li>
</ul>
match:<br>
<ul>
+<li>
+ws</li>
</ul>
<a name="lexstate38"></a><span style="font-weight: bold; text-decoration: underline;">state #38</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['.' - '.'] goto <a href="#lexstate37">state #37</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate38">state #38</a></li>
-<li>by ['E' - 'E'] goto <a href="#lexstate39">state #39</a></li>
-<li>by ['e' - 'e'] goto <a href="#lexstate40">state #40</a></li>
+<li>by [0X0 - 0X9] goto <a href="#lexstate107">state #107</a></li>
+<li>by [0Xa - 0Xa] goto <a href="#lexstate108">state #108</a></li>
+<li>by [0Xb - ' '] goto <a href="#lexstate109">state #109</a></li>
+<li>by ['!' - '"'] goto <a href="#lexstate110">state #110</a></li>
+<li>by ['#' - '#'] goto <a href="#lexstate111">state #111</a></li>
+<li>by ['$' - 0Xffff] goto <a href="#lexstate110">state #110</a></li>
</ul>
match:<br>
<ul>
<li>
-integer</li>
+ws</li>
</ul>
<a name="lexstate39"></a><span style="font-weight: bold; text-decoration: underline;">state #39</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['+' - '+'] goto <a href="#lexstate102">state #102</a></li>
-<li>by ['-' - '-'] goto <a href="#lexstate103">state #103</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate104">state #104</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate112">state #112</a></li>
+<li>by ['E' - 'E'] goto <a href="#lexstate41">state #41</a></li>
+<li>by ['e' - 'e'] goto <a href="#lexstate42">state #42</a></li>
</ul>
match:<br>
<ul>
@@ -622,49 +649,44 @@
<a name="lexstate40"></a><span style="font-weight: bold; text-decoration: underline;">state #40</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['+' - '+'] goto <a href="#lexstate102">state #102</a></li>
-<li>by ['-' - '-'] goto <a href="#lexstate103">state #103</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate104">state #104</a></li>
+<li>by ['.' - '.'] goto <a href="#lexstate39">state #39</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate40">state #40</a></li>
+<li>by ['E' - 'E'] goto <a href="#lexstate41">state #41</a></li>
+<li>by ['e' - 'e'] goto <a href="#lexstate42">state #42</a></li>
</ul>
match:<br>
<ul>
+<li>
+integer</li>
</ul>
<a name="lexstate41"></a><span style="font-weight: bold; text-decoration: underline;">state #41</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate105">state #105</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate106">state #106</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate107">state #107</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate108">state #108</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate109">state #109</a></li>
+<li>by ['+' - '+'] goto <a href="#lexstate113">state #113</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate114">state #114</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate115">state #115</a></li>
</ul>
match:<br>
<ul>
-<li>
-qname</li>
</ul>
<a name="lexstate42"></a><span style="font-weight: bold; text-decoration: underline;">state #42</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate105">state #105</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate106">state #106</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate107">state #107</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate108">state #108</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate109">state #109</a></li>
+<li>by ['+' - '+'] goto <a href="#lexstate113">state #113</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate114">state #114</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate115">state #115</a></li>
</ul>
match:<br>
<ul>
-<li>
-qname</li>
</ul>
<a name="lexstate43"></a><span style="font-weight: bold; text-decoration: underline;">state #43</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate105">state #105</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate106">state #106</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate107">state #107</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate108">state #108</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate109">state #109</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate116">state #116</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate117">state #117</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate118">state #118</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate119">state #119</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate120">state #120</a></li>
</ul>
match:<br>
<ul>
@@ -674,11 +696,11 @@
<a name="lexstate44"></a><span style="font-weight: bold; text-decoration: underline;">state #44</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate105">state #105</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate106">state #106</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate107">state #107</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate108">state #108</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate109">state #109</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate116">state #116</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate117">state #117</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate118">state #118</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate119">state #119</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate120">state #120</a></li>
</ul>
match:<br>
<ul>
@@ -688,11 +710,11 @@
<a name="lexstate45"></a><span style="font-weight: bold; text-decoration: underline;">state #45</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate105">state #105</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate106">state #106</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate107">state #107</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate108">state #108</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate109">state #109</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate116">state #116</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate117">state #117</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate118">state #118</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate119">state #119</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate120">state #120</a></li>
</ul>
match:<br>
<ul>
@@ -702,40 +724,49 @@
<a name="lexstate46"></a><span style="font-weight: bold; text-decoration: underline;">state #46</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - '='] goto <a href="#lexstate110">state #110</a></li>
-<li>by ['>' - '>'] goto <a href="#lexstate48">state #48</a></li>
-<li>by ['?' - 0Xffff] goto <a href="#lexstate111">state #111</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate116">state #116</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate117">state #117</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate118">state #118</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate119">state #119</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate120">state #120</a></li>
</ul>
match:<br>
<ul>
+<li>
+qname</li>
</ul>
<a name="lexstate47"></a><span style="font-weight: bold; text-decoration: underline;">state #47</span><br><br>
goto by terminal:<br>
<ul>
+<li>by ['-' - '-'] goto <a href="#lexstate116">state #116</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate117">state #117</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate118">state #118</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate119">state #119</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate120">state #120</a></li>
</ul>
match:<br>
<ul>
<li>
-revert_implies</li>
+qname</li>
</ul>
<a name="lexstate48"></a><span style="font-weight: bold; text-decoration: underline;">state #48</span><br><br>
goto by terminal:<br>
<ul>
+<li>by [0X0 - '='] goto <a href="#lexstate121">state #121</a></li>
+<li>by ['>' - '>'] goto <a href="#lexstate50">state #50</a></li>
+<li>by ['?' - 0Xffff] goto <a href="#lexstate122">state #122</a></li>
</ul>
match:<br>
<ul>
-<li>
-strexplicituri</li>
</ul>
<a name="lexstate49"></a><span style="font-weight: bold; text-decoration: underline;">state #49</span><br><br>
goto by terminal:<br>
<ul>
-<li>by [0X0 - '='] goto <a href="#lexstate110">state #110</a></li>
-<li>by ['>' - '>'] goto <a href="#lexstate48">state #48</a></li>
-<li>by ['?' - 0Xffff] goto <a href="#lexstate111">state #111</a></li>
</ul>
match:<br>
<ul>
+<li>
+revert_implies</li>
</ul>
<a name="lexstate50"></a><span style="font-weight: bold; text-decoration: underline;">state #50</span><br><br>
goto by terminal:<br>
@@ -744,48 +775,35 @@
match:<br>
<ul>
<li>
-implies</li>
+strexplicituri</li>
</ul>
<a name="lexstate51"></a><span style="font-weight: bold; text-decoration: underline;">state #51</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate112">state #112</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate113">state #113</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate114">state #114</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate115">state #115</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate116">state #116</a></li>
+<li>by [0X0 - '='] goto <a href="#lexstate121">state #121</a></li>
+<li>by ['>' - '>'] goto <a href="#lexstate50">state #50</a></li>
+<li>by ['?' - 0Xffff] goto <a href="#lexstate122">state #122</a></li>
</ul>
match:<br>
<ul>
-<li>
-name</li>
-<li>
-quickvariable</li>
</ul>
<a name="lexstate52"></a><span style="font-weight: bold; text-decoration: underline;">state #52</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate112">state #112</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate113">state #113</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate114">state #114</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate115">state #115</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate116">state #116</a></li>
</ul>
match:<br>
<ul>
<li>
-name</li>
-<li>
-quickvariable</li>
+implies</li>
</ul>
<a name="lexstate53"></a><span style="font-weight: bold; text-decoration: underline;">state #53</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate112">state #112</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate113">state #113</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate114">state #114</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate115">state #115</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate116">state #116</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate123">state #123</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate124">state #124</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate125">state #125</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate126">state #126</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate127">state #127</a></li>
</ul>
match:<br>
<ul>
@@ -797,33 +815,48 @@
<a name="lexstate54"></a><span style="font-weight: bold; text-decoration: underline;">state #54</span><br><br>
goto by terminal:<br>
<ul>
+<li>by ['-' - '-'] goto <a href="#lexstate123">state #123</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate124">state #124</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate125">state #125</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate126">state #126</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate127">state #127</a></li>
</ul>
match:<br>
<ul>
<li>
-keyword_a</li>
+name</li>
+<li>
+quickvariable</li>
</ul>
<a name="lexstate55"></a><span style="font-weight: bold; text-decoration: underline;">state #55</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['a' - 'a'] goto <a href="#lexstate117">state #117</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate123">state #123</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate124">state #124</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate125">state #125</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate126">state #126</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate127">state #127</a></li>
</ul>
match:<br>
<ul>
+<li>
+name</li>
+<li>
+quickvariable</li>
</ul>
<a name="lexstate56"></a><span style="font-weight: bold; text-decoration: underline;">state #56</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['a' - 'a'] goto <a href="#lexstate118">state #118</a></li>
-<li>by ['o' - 'o'] goto <a href="#lexstate119">state #119</a></li>
</ul>
match:<br>
<ul>
+<li>
+keyword_a</li>
</ul>
<a name="lexstate57"></a><span style="font-weight: bold; text-decoration: underline;">state #57</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['a' - 'a'] goto <a href="#lexstate120">state #120</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate128">state #128</a></li>
</ul>
match:<br>
<ul>
@@ -831,7 +864,8 @@
<a name="lexstate58"></a><span style="font-weight: bold; text-decoration: underline;">state #58</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['s' - 's'] goto <a href="#lexstate121">state #121</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate129">state #129</a></li>
+<li>by ['o' - 'o'] goto <a href="#lexstate130">state #130</a></li>
</ul>
match:<br>
<ul>
@@ -839,7 +873,7 @@
<a name="lexstate59"></a><span style="font-weight: bold; text-decoration: underline;">state #59</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['e' - 'e'] goto <a href="#lexstate122">state #122</a></li>
+<li>by ['a' - 'a'] goto <a href="#lexstate131">state #131</a></li>
</ul>
match:<br>
<ul>
@@ -847,7 +881,7 @@
<a name="lexstate60"></a><span style="font-weight: bold; text-decoration: underline;">state #60</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['f' - 'f'] goto <a href="#lexstate123">state #123</a></li>
+<li>by ['s' - 's'] goto <a href="#lexstate132">state #132</a></li>
</ul>
match:<br>
<ul>
@@ -855,7 +889,7 @@
<a name="lexstate61"></a><span style="font-weight: bold; text-decoration: underline;">state #61</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['r' - 'r'] goto <a href="#lexstate124">state #124</a></li>
+<li>by ['e' - 'e'] goto <a href="#lexstate133">state #133</a></li>
</ul>
match:<br>
<ul>
@@ -863,7 +897,7 @@
<a name="lexstate62"></a><span style="font-weight: bold; text-decoration: underline;">state #62</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['r' - 'r'] goto <a href="#lexstate125">state #125</a></li>
+<li>by ['f' - 'f'] goto <a href="#lexstate134">state #134</a></li>
</ul>
match:<br>
<ul>
@@ -871,15 +905,31 @@
<a name="lexstate63"></a><span style="font-weight: bold; text-decoration: underline;">state #63</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate126">state #126</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate127">state #127</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate130">state #130</a></li>
+<li>by ['r' - 'r'] goto <a href="#lexstate135">state #135</a></li>
</ul>
match:<br>
<ul>
+</ul>
+<a name="lexstate64"></a><span style="font-weight: bold; text-decoration: underline;">state #64</span><br><br>
+goto by terminal:<br>
+<ul>
+<li>by ['r' - 'r'] goto <a href="#lexstate136">state #136</a></li>
+</ul>
+match:<br>
+<ul>
+</ul>
+<a name="lexstate65"></a><span style="font-weight: bold; text-decoration: underline;">state #65</span><br><br>
+goto by terminal:<br>
+<ul>
+<li>by ['-' - '-'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate138">state #138</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate141">state #141</a></li>
+</ul>
+match:<br>
+<ul>
<li>
name</li>
<li>
@@ -887,15 +937,15 @@
<li>
qname</li>
</ul>
-<a name="lexstate64"></a><span style="font-weight: bold; text-decoration: underline;">state #64</span><br><br>
+<a name="lexstate66"></a><span style="font-weight: bold; text-decoration: underline;">state #66</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate126">state #126</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate127">state #127</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate130">state #130</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate138">state #138</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate141">state #141</a></li>
</ul>
match:<br>
<ul>
@@ -906,14 +956,14 @@
<li>
qname</li>
</ul>
-<a name="lexstate65"></a><span style="font-weight: bold; text-decoration: underline;">state #65</span><br><br>
+<a name="lexstate67"></a><span style="font-weight: bold; text-decoration: underline;">state #67</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate131">state #131</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate132">state #132</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate133">state #133</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate134">state #134</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate135">state #135</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate142">state #142</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate143">state #143</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate144">state #144</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate145">state #145</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate146">state #146</a></li>
</ul>
match:<br>
<ul>
@@ -922,15 +972,15 @@
<li>
qname</li>
</ul>
-<a name="lexstate66"></a><span style="font-weight: bold; text-decoration: underline;">state #66</span><br><br>
+<a name="lexstate68"></a><span style="font-weight: bold; text-decoration: underline;">state #68</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate126">state #126</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate127">state #127</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate130">state #130</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate138">state #138</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate141">state #141</a></li>
</ul>
match:<br>
<ul>
@@ -941,15 +991,15 @@
<li>
qname</li>
</ul>
-<a name="lexstate67"></a><span style="font-weight: bold; text-decoration: underline;">state #67</span><br><br>
+<a name="lexstate69"></a><span style="font-weight: bold; text-decoration: underline;">state #69</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate126">state #126</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate127">state #127</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate130">state #130</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate138">state #138</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate141">state #141</a></li>
</ul>
match:<br>
<ul>
@@ -960,15 +1010,15 @@
<li>
qname</li>
</ul>
-<a name="lexstate68"></a><span style="font-weight: bold; text-decoration: underline;">state #68</span><br><br>
+<a name="lexstate70"></a><span style="font-weight: bold; text-decoration: underline;">state #70</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate126">state #126</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate127">state #127</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate130">state #130</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate138">state #138</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate141">state #141</a></li>
</ul>
match:<br>
<ul>
@@ -979,7 +1029,7 @@
<li>
qname</li>
</ul>
-<a name="lexstate69"></a><span style="font-weight: bold; text-decoration: underline;">state #69</span><br><br>
+<a name="lexstate71"></a><span style="font-weight: bold; text-decoration: underline;">state #71</span><br><br>
goto by terminal:<br>
<ul>
</ul>
@@ -988,15 +1038,15 @@
<li>
double_caret</li>
</ul>
-<a name="lexstate70"></a><span style="font-weight: bold; text-decoration: underline;">state #70</span><br><br>
+<a name="lexstate72"></a><span style="font-weight: bold; text-decoration: underline;">state #72</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate126">state #126</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate136">state #136</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate137">state #137</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate147">state #147</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate148">state #148</a></li>
</ul>
match:<br>
<ul>
@@ -1007,15 +1057,15 @@
<li>
qname</li>
</ul>
-<a name="lexstate71"></a><span style="font-weight: bold; text-decoration: underline;">state #71</span><br><br>
+<a name="lexstate73"></a><span style="font-weight: bold; text-decoration: underline;">state #73</span><br><br>
goto by terminal:<br>
<ul>
-<li>by ['-' - '-'] goto <a href="#lexstate138">state #138</a></li>
-<li>by ['0' - '9'] goto <a href="#lexstate127">state #127</a></li>
-<li>by [':' - ':'] goto <a href="#lexstate65">state #65</a></li>
-<li>by ['A' - 'Z'] goto <a href="#lexstate128">state #128</a></li>
-<li>by ['_' - '_'] goto <a href="#lexstate129">state #129</a></li>
-<li>by ['a' - 'z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['-' - '-'] goto <a href="#lexstate149">state #149</a></li>
+<li>by ['0' - '9'] goto <a href="#lexstate138">state #138</a></li>
+<li>by [':' - ':'] goto <a href="#lexstate67">state #67</a></li>
+<li>by ['A' - 'Z'] goto <a href="#lexstate139">state #139</a></li>
+<li>by ['_' - '_'] goto <a href="#lexstate140">state #140</a></li>
+<li>by ['a' - 'z'] goto <a href="#lexstate150">state #150</a></li>
</ul>
match:<br>
<ul>
@@ -1028,17 +1078,17 @...
[truncated message content] |
|
From: <luc...@us...> - 2010-03-23 06:17:54
|
Revision: 1338
http://eulergui.svn.sourceforge.net/eulergui/?rev=1338&view=rev
Author: luc_peuvrier
Date: 2010-03-23 06:17:47 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
added exception when resource not found
Modified Paths:
--------------
trunk/eulergui/src/main/parser4j/java/eulergui/parser/n3/impl/parser4j/gen/MainGenerateParserDataForN3.java
Modified: trunk/eulergui/src/main/parser4j/java/eulergui/parser/n3/impl/parser4j/gen/MainGenerateParserDataForN3.java
===================================================================
--- trunk/eulergui/src/main/parser4j/java/eulergui/parser/n3/impl/parser4j/gen/MainGenerateParserDataForN3.java 2010-03-23 05:00:31 UTC (rev 1337)
+++ trunk/eulergui/src/main/parser4j/java/eulergui/parser/n3/impl/parser4j/gen/MainGenerateParserDataForN3.java 2010-03-23 06:17:47 UTC (rev 1338)
@@ -57,22 +57,26 @@
}
private void run() {
- final ClassLoader classLoader = // getClass().getClassLoader();
- Thread.currentThread().getContextClassLoader();
- final URL url = classLoader.getResource(grammarInputResourceName);
- final File grammarInputFile = new File(url.getFile());
-
- final File htmlOutputFile = new File(outputFolder + "/"
- + htmlOutputFileName);
- final File txtLexGenLogOutputFile = new File(outputFolder + "/"
- + txtLexGenLogOutputFileName);
- final File grammarTreeTextFile = new File(outputFolder + "/"
- + grammarTreeTextFileName);
- final File grammarDefTreeTextFile = new File(outputFolder + "/"
- + grammarDefTreeTextFileName);
- final String matchMgrPackageName = GenMatchPackage.getPackageName();
- final File parserDataOutputFile = new File(parserDataOutputFullFileName);
try {
+ final ClassLoader classLoader = // getClass().getClassLoader();
+ Thread.currentThread().getContextClassLoader();
+ final URL url = classLoader.getResource(grammarInputResourceName);
+ if (url == null) {
+ throw new GeneratorException("no url for \""
+ + grammarInputResourceName + "\"");
+ }
+ final File grammarInputFile = new File(url.getFile());
+ final File htmlOutputFile = new File(outputFolder + "/"
+ + htmlOutputFileName);
+ final File txtLexGenLogOutputFile = new File(outputFolder + "/"
+ + txtLexGenLogOutputFileName);
+ final File grammarTreeTextFile = new File(outputFolder + "/"
+ + grammarTreeTextFileName);
+ final File grammarDefTreeTextFile = new File(outputFolder + "/"
+ + grammarDefTreeTextFileName);
+ final String matchMgrPackageName = GenMatchPackage.getPackageName();
+ final File parserDataOutputFile = new File(
+ parserDataOutputFullFileName);
final ParseResult parseResult = parserDataGenerator.generate(url
.toString(), grammarInputFile, htmlOutputFile,
txtLexGenLogOutputFile, parserDataOutputFile,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2010-03-23 05:00:42
|
Revision: 1337
http://eulergui.svn.sourceforge.net/eulergui/?rev=1337&view=rev
Author: luc_peuvrier
Date: 2010-03-23 05:00:31 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
added line/colomn/filename to parse node data
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/AbstractStatementMemberType.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BarNameListData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BlankNodeData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/LiteralValueData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/ObjectListData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/PropertyListData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/StatementData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SubjectOrObjectData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SymbolListData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/UriValueData.java
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/VerbData.java
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/AbstractStatementMemberType.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/AbstractStatementMemberType.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/AbstractStatementMemberType.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -1,11 +1,14 @@
package eulergui.parser.n3.impl.parser4j.entity.data;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
+
/**
*
* @author luc peuvrier
*
*/
-public abstract class AbstractStatementMemberType {
+public abstract class AbstractStatementMemberType extends
+ AbstractParserNodeData {
protected EnumStatementMemberType type;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BarNameListData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BarNameListData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BarNameListData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -1,13 +1,13 @@
package eulergui.parser.n3.impl.parser4j.entity.data;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class BarNameListData implements IParseNodeData {
+public class BarNameListData extends AbstractParserNodeData {
private final String barName;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BlankNodeData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BlankNodeData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/BlankNodeData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -1,14 +1,14 @@
package eulergui.parser.n3.impl.parser4j.entity.data;
import net.sf.parser4j.parser.entity.parsenode.IParseNode;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class BlankNodeData implements IParseNodeData, Comparable<BlankNodeData> {
+public class BlankNodeData extends AbstractParserNodeData implements Comparable<BlankNodeData> {
private final String identifier;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/LiteralValueData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/LiteralValueData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/LiteralValueData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -1,13 +1,13 @@
package eulergui.parser.n3.impl.parser4j.entity.data;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class LiteralValueData implements IParseNodeData {
+public class LiteralValueData extends AbstractParserNodeData {
/** TODO constant pool for xml schemas, see DatatypeHelper;
* this is not complete, see
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/ObjectListData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/ObjectListData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/ObjectListData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -1,13 +1,13 @@
package eulergui.parser.n3.impl.parser4j.entity.data;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class ObjectListData implements IParseNodeData {
+public class ObjectListData extends AbstractParserNodeData {
private final ObjectListData next;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/PropertyListData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/PropertyListData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/PropertyListData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -2,14 +2,14 @@
import java.net.URISyntaxException;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class PropertyListData implements IParseNodeData {
+public class PropertyListData extends AbstractParserNodeData {
private final PropertyListData next;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/StatementData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/StatementData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/StatementData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -4,14 +4,14 @@
import java.util.TreeSet;
import net.sf.parser4j.parser.entity.parsenode.IParseNode;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class StatementData implements IParseNodeData {
+public class StatementData extends AbstractParserNodeData {
private StatementEltData first;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SubjectOrObjectData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SubjectOrObjectData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SubjectOrObjectData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -7,8 +7,7 @@
* @author luc peuvrier
*
*/
-public class SubjectOrObjectData extends AbstractStatementMemberType implements
- IParseNodeData {
+public class SubjectOrObjectData extends AbstractStatementMemberType {
private final UriValueData uriValue;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SymbolListData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SymbolListData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/SymbolListData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -1,13 +1,13 @@
package eulergui.parser.n3.impl.parser4j.entity.data;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
/**
*
* @author luc peuvrier
*
*/
-public class SymbolListData implements IParseNodeData {
+public class SymbolListData extends AbstractParserNodeData {
private final SymbolListData next;
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/UriValueData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/UriValueData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/UriValueData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -2,7 +2,7 @@
import java.net.URISyntaxException;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.data.AbstractParserNodeData;
import eulergui.parser.n3.impl.parser4j.service.util.UriUtil;
/**
@@ -10,7 +10,8 @@
* @author luc peuvrier
*
*/
-public class UriValueData implements IParseNodeData, Comparable<UriValueData> {
+public class UriValueData extends AbstractParserNodeData implements
+ Comparable<UriValueData> {
private static final UriUtil uriUtil = UriUtil.getInstance();
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/VerbData.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/VerbData.java 2010-03-22 12:34:49 UTC (rev 1336)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/data/VerbData.java 2010-03-23 05:00:31 UTC (rev 1337)
@@ -2,15 +2,12 @@
import java.net.URISyntaxException;
-import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
-
/**
*
* @author luc peuvrier
*
*/
-public class VerbData extends AbstractStatementMemberType implements
- IParseNodeData {
+public class VerbData extends AbstractStatementMemberType {
private final UriValueData uriValueData;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: SourceForge.net <no...@so...> - 2010-03-22 16:16:24
|
Feature Requests item #2968747, was opened at 2010-03-11 16:00 Message generated for change (Settings changed) made by jmvanel You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=1104479&aid=2968747&group_id=237733 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Priority: 5 Private: No Submitted By: iamlolive (iamlolive) >Assigned to: iamlolive (iamlolive) Summary: Error in parsing should appear in the GUI Initial Comment: When loading a N3Source, if the parsing fails, an error sign should appear left to the file name (with a tooltip corresponding to the error message). Editing the source would automatically set the caret at the error line. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=1104479&aid=2968747&group_id=237733 |
|
From: SourceForge.net <no...@so...> - 2010-03-22 16:09:59
|
Feature Requests item #2969415, was opened at 2010-03-12 14:14 Message generated for change (Settings changed) made by jmvanel You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=1104479&aid=2969415&group_id=237733 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Drools Group: None Status: Open Priority: 6 Private: No Submitted By: Jean-Marc Vanel (jmvanel) >Assigned to: iamlolive (iamlolive) Summary: use insertLogical() instead of insert() Initial Comment: We should use insertLogical() everywhere instead of insert() in the N3 --> Drools translation . This will pave the way for : - retracting windows and forms by the rule engine - temporarily asserting user data subject to validation rules, so that unvalidated stuff gets whiped out by the engine. Need to verify that the executation times are inded comparable , if not inferior as Mark says . dialog with Mark Protor good evening ! I have a question about insertLogical() ; I am tempted to use it all the time, but I wonder how much will I have to pay in terms of performances <conan> not too much <conan> if you are using trunk <conan> it's even more efficient there ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=1104479&aid=2969415&group_id=237733 |
|
From: <jm...@us...> - 2010-03-22 12:34:56
|
Revision: 1336
http://eulergui.svn.sourceforge.net/eulergui/?rev=1336&view=rev
Author: jmvanel
Date: 2010-03-22 12:34:49 +0000 (Mon, 22 Mar 2010)
Log Message:
-----------
update doc.: n3_rules_good_practices.html, taches,
documentation.html : EulerGUI should flag non-monotonic (non OWA) rules and documents containing such rules.
Modified Paths:
--------------
trunk/eulergui/html/documentation.html
trunk/eulergui/html/n3_rules_good_practices.html
trunk/eulergui/html/taches.html
Property Changed:
----------------
trunk/eulergui/html/n3_rules_good_practices.html
Modified: trunk/eulergui/html/documentation.html
===================================================================
--- trunk/eulergui/html/documentation.html 2010-03-21 12:37:18 UTC (rev 1335)
+++ trunk/eulergui/html/documentation.html 2010-03-22 12:34:49 UTC (rev 1336)
@@ -11,7 +11,7 @@
<body>
<p style="text-align:center;font-size: 20pt">Euler GUI Manual</p>
-<p>© Jean-Marc Vanel - $Date: 2010-03-19$ - <a
+<p>© Jean-Marc Vanel - $Date: 2010-03-21$ - <a
href="http://eulergui.sourceforge.net/documentation.html">a view possibly older
in sync. with EulerGUI release </a> - <a
href="http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html">Latest
@@ -2248,7 +2248,8 @@
<h2 id="TODO">Missing features</h2>
<p>Partly prioritized, mostly historical, with older ideas below.</p>
-<pre>- an N3 file with fileencoding=utf-8, fileencodings=ucs-bom,utf-8,default,latin1
+<pre>- EulerGUI should flag non-monotonic (non OWA) rules and documents containing such rules.
+- an N3 file with fileencoding=utf-8, fileencodings=ucs-bom,utf-8,default,latin1
is not parsed right when it contains a non-ASCII character
- add to project ontologies imported by owl:import
- refresh all conversions to N3 (useful if modifications in e.g. Protégé)
Modified: trunk/eulergui/html/n3_rules_good_practices.html
===================================================================
--- trunk/eulergui/html/n3_rules_good_practices.html 2010-03-21 12:37:18 UTC (rev 1335)
+++ trunk/eulergui/html/n3_rules_good_practices.html 2010-03-22 12:34:49 UTC (rev 1336)
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>N3 rules good practices</title>
<style type="text/css">
@@ -16,14 +16,14 @@
<p style="font-size: 20pt">N3 rules: good practices, design patterns,
refactoring</p>
-<p>\xA9 Jean-Marc Vanel - $Date$</p>
+<p>© Jean-Marc Vanel - $Date$</p>
<p>TOC</p>
<div class="toc">
<ul>
<li><a href="#L470">Introduction</a></li>
- <li><a href="#L587">The limitations of RDF</a>
+ <li><a href="#L587">The limitations of RDF</a>
<ul>
<li><a href="#L930">Open world assumption</a></li>
<li><a href="#L1262">Monotonicity</a></li>
@@ -31,27 +31,27 @@
</li>
<li><a href="#L593">The limitations of N3 logic</a></li>
<li><a href="#L944">Using OWL ontologies</a></li>
- <li><a href="#L387">Variables patterns</a>
+ <li><a href="#L387">Variables patterns</a>
<ul>
<li><a href="#L398">Quantification</a></li>
<li><a href="#L420">Multiple occurences</a></li>
</ul>
</li>
- <li><a href="#L180">Design patterns</a>
+ <li><a href="#L180">Design patterns</a>
<ul>
<li><a href="#L432">Annotate the existing objects</a></li>
<li><a href="#L445">Create new objects</a></li>
</ul>
</li>
<li><a href="#L557">Data structures</a></li>
- <li><a href="#L255">Lists variants</a>
+ <li><a href="#L255">Lists variants</a>
<ul>
<li><a href="#L215">Lists OWL style</a></li>
<li><a href="#L303">Cloning a list</a></li>
<li><a href="#L170">Accumulating by recursion</a></li>
</ul>
</li>
- <li><a href="#L26">N3 refactorings</a>
+ <li><a href="#L26">N3 refactorings</a>
<ul>
<li><a href="#L135">Extract part of antecedent</a></li>
</ul>
@@ -72,7 +72,7 @@
<p><a href="http://www.google.fr/search?q=SWRL+design+pattern">Google search
SWRL+design+pattern</a></p>
-<p><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ">Prot\xE9g\xE9
+<p><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ">Protégé
wiki SWRL Language FAQ</a></p>
<p></p>
@@ -107,7 +107,7 @@
language, there is no limitation. Everything that can be expressed in XML, XMI,
SQL, JSON, can also be expressed in RDF and N3. Moreover, RDF is by design
adapted to Internet: URI are globally unique identifiers that can be
-dererenced, and it has SWRL for query language and protocol.</p>
+dereferenced, and it has SWRL for query language and protocol.</p>
<p>Then the principles of the Semantic Web imply the Open World Assumption,
which is a necessary limitation for the huge and ever changing Web.</p>
@@ -116,9 +116,9 @@
href="http://www.betaversion.org/~stefano/linotype/news/91/">Open world
assumption</a></h3>
-<p>The closed world assumption implies that everything we don’t know is
-false, while the open world assumption states that everything we don’t
-know is undefined. </p>
+<p>The closed world assumption implies that everything we don’t know is
+false, while the open world assumption states that everything we don’t know
+is undefined. </p>
<p>The closed world is the point of vue of all databases, except RDF databases.
Related to closed world assumption, there is a the unique name assumption,
@@ -145,6 +145,16 @@
form of negation; see the paragraph "Motivation" of <a
href="http://www.w3.org/DesignIssues/N3Logic">DesignIssues / N3Logic</a> .</p>
+<h2>Rules languages</h2>
+
+<p>http://www.jessrules.com/jess/index.shtml</p>
+
+<p>http://www.jessrules.com/jess/docs/71/rules.html#rules</p>
+
+<p>http://www.w3.org/Submission/SWRL</p>
+
+<p>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTutorialESWC2010#nidB64</p>
+
<h2 id="L593">The limitations of N3 logic</h2>
<p>The original N3 logic (like SWRL) follows strictly the principles of the
@@ -208,20 +218,50 @@
<h2 id="L557">Data structures</h2>
-<p>No sets ? Why ? Because ordinary RDF properties act as sets.</p>
+<p>No sets ? Why ? Because an ordinary RDF property <code>myProp</code> plus a
+resource <code>R</code> defines the set of ?V such that :</p>
-<p>RDF is a bunch of associative arrays (called maps in Java and C++). ????</p>
+<p><code>R myProp ?V .</code></p>
+<p>RDF is a bunch of associative arrays (called maps in Java and C++). More
+precisely each resource in subject position can be considered as an associative
+array whose keys are the properties and whose values are the objects.</p>
+
<h2 id="L255">Lists variants</h2>
-<p>RDF lists, OWL, linked list.</p>
+<p>We are dealing here with ordered lists. As noted before, non-ordered lists
+(sets) are just expressible with ordinary RDF statements.</p>
-<p>transitive properties</p>
+<p>In RDF, there is a special pre-defined class rdf:List, with two properties
+<code>rdf:first</code> and <code>rdf:rest</code>, and a resource
+<code>rdf:nil</code> to terminate the list. But in fact, this is just the
+simplest way to define a linked list with a graph language like RDF. Instead of
+rdf:rest, any domain specific property can be used to define a linked list.</p>
+<h3>Transitive properties</h3>
+
+<p>Transitive properties are frequent for relations like: physical containment,
+ordering relationship, entreprise hierarchy, ancestor relation, ... They are
+typically modelized by an OWL Transitive property.</p>
+
+<p>???</p>
+
<h3 id="L215">Lists OWL style</h3>
-<p>????</p>
+<p>When using a plain domain specific property to define a linked list, there
+is </p>
+<p></p>
+<pre>class List hasNext only List
+ class EmptyList hasContents max 0, hasNext max 0
+
+object property hasContents functional
+
+object property hasRest transitive
+ object property hasNext functional</pre>
+
+<p></p>
+
<p>There is a paper describing the list pattern in OWL:</p>
<p>Drummond, N., Rector, A.L., Stevens, R., Moulton, G., Horridge, M., Wang, H,
@@ -233,6 +273,20 @@
<p></p>
+<p>To use this OWL list ontology, one must import the ontology from the generic
+URL:</p>
+
+<p><a
+href="http://www.co-ode.org/ontologies/lists/list.owl">http://www.co-ode.org/ontologies/lists/list.owl</a></p>
+
+<p></p>
+
+<p>and particularize the class OWLList as a list of cities, by two
+owl:Restrictions , like this (in Manchester OWL syntax) :</p>
+<pre><code>Itinerary equivalentTo</code><code> hasContents only City</code><code> and OWLList</code><code> and isFollowedBy only Itinerary</code></pre>
+
+<p></p>
+
<h3 id="L303">Cloning a list</h3>
<p>Here is an example with user specific :first and :rest properties , <a
Property changes on: trunk/eulergui/html/n3_rules_good_practices.html
___________________________________________________________________
Added: svn:keywords
+ Date
Modified: trunk/eulergui/html/taches.html
===================================================================
--- trunk/eulergui/html/taches.html 2010-03-21 12:37:18 UTC (rev 1335)
+++ trunk/eulergui/html/taches.html 2010-03-22 12:34:49 UTC (rev 1336)
@@ -15,22 +15,16 @@
</head>
<body>
-<p>Taches EulerGUI</p>
+<p><span style="font-size: 20pt">Taches EulerGUI</span></p>
-<p></p>
-
<p>Conception : points \xE0 voir:</p>
-<p></p>
-
<p>plusieurs WM ou une seule ? a priori une seule</p>
<p></p>
<h2>1.1 ficher de donn\xE9es et de configuration en N3</h2>
-<p></p>
-
<h2>Validation des donn\xE9es (contraintes)</h2>
<p>Prendre en compte la validation des donn\xE9es (contraintes) : faut-il une
@@ -73,6 +67,12 @@
<td><strong>Commentaire</strong></td>
</tr>
<tr>
+ <td>log et fen\xEAtres de messages</td>
+ <td></td>
+ <td>voir si un IDE ne fait pas automatiquement une partie du travail;
+ ajouter un espace messages</td>
+ </tr>
+ <tr>
<td>I18N</td>
<td></td>
<td>dans Java : pas de pb; dans N3: 1. entrer les valeurs de xml:lang en
@@ -88,10 +88,11 @@
<td>FAIT, \xE0 documenter</td>
</tr>
<tr>
- <td>log et fen\xEAtres de messages</td>
+ <td>\xE9crire un "script" en Java : lancer les cas de d\xE9mo : FaceBook, ceux
+ du manuel D\xE9ductions</td>
<td></td>
- <td>voir si un IDE ne fait pas automatiquement une partie du travail;
- ajouter un espace messages</td>
+ <td>il serait bien de g\xE9n\xE9rer une config. JNLP \xE0 partir de la config.
+ Maven.</td>
</tr>
<tr>
<td>catalogue de XML Schema en N3</td>
@@ -99,44 +100,54 @@
<td>se mettre d'accord sur le vocabulaire RDF</td>
</tr>
<tr>
- <td>\xE9crire un "script" en Java : lancer les cas de d\xE9mo : FaceBook, ceux
- du manuel D\xE9ductions</td>
- <td></td>
- <td>il serait bien de g\xE9n\xE9rer une config. JNLP \xE0 partir de la config.
- Maven.</td>
- </tr>
- <tr>
<td>Utiliser Jython</td>
<td></td>
- <td></td>
+ <td>probl\xE8mes avec rdflib</td>
</tr>
<tr>
<td>1.1 avoir un ficher de donn\xE9es et de configuration en N3 (
actuellement, la honte, c'est du XMLEncoder ) ;</td>
<td></td>
- <td>refactorer Project pour mettre toutes les donn\xE9es dans une KB.</td>
+ <td>on a d'aboord envisag\xE9 de refactorer Project pour mettre toutes les
+ donn\xE9es dans une KB;
+
+ <p>le proto. actuel garde la structure de donn\xE9es Java, mais ajoute un
+ listener qui remplit la KB, cf</p>
+
+ <p><a href="project_ontology.html">Proposal for a new ontology and N3
+ format for RDF + OWL + rules projects</a></p>
+ </td>
</tr>
<tr>
<td>1.2 pouvoir exporter les mini-application avec formulaires g\xE9n\xE9r\xE9es
(actuellement elles ne tournent que dans l'IDE )</td>
<td></td>
- <td>bla??????????</td>
+ <td>en fait on n'a pas besoin dans un premier temps d'extraire les
+ classes n\xE9cessaires (runtime Drools, instanciateur, etc) , on peut
+ utiliser le gros jar de EulerGUI;
+
+ <p>ce serait juste un argument <code>--launch</code> qui lancer
+ l'application g\xE9n\xE9r\xE9e .</p>
+ </td>
</tr>
<tr>
<td>1.3 am\xE9liorer ces mini-application, les rendres plus
configurables</td>
<td></td>
- <td>??????????? hyperlien , cf Prot\xE9g\xE9 Forms
-
- <p>sans en faire trop car c'est du boulot ( mais on est au coeur de la
- d\xE9marche qui est de d\xE9duire l'application, et qui permettra \xE0 terme de
- g\xE9n\xE9rer une application telle que EulerGUI )</p>
+ <td><p>sans en faire trop car c'est du boulot ( mais on est au coeur de
+ la d\xE9marche qui est de d\xE9duire l'application, et qui permettra \xE0 terme
+ de g\xE9n\xE9rer une application telle que EulerGUI )</p>
</td>
</tr>
<tr>
<td>int\xE9grer le composant form de Prot\xE9g\xE9 3</td>
<td></td>
- <td>: qui l'a fait ? D\xE9pendant de la vieille API CLIPS </td>
+ <td>cf <a
+ href="http://protegewiki.stanford.edu/index.php/UseProtegeFormsInApplications">Using
+ Protege Forms in Other Applications</a>
+
+ <p>: qui l'a fait ? D\xE9pendant de la vieille API CLIPS </p>
+ </td>
</tr>
<tr>
<td>1.4 embarquer un moteur de r\xE8gle dans l'application EulerGUI
@@ -151,20 +162,33 @@
savoir que si le projet inclut certains URL, alors c'est un projet
d'IHM, et alors il faudra lancer certains outils; d\xE9corer les sources
du projet en fonction de leur contenu, statut, statistiques et
- m\xE9triques, historique, etc</td>
+ m\xE9triques, historique, etc
+
+ <p>cf <a href="project_ontology.html">Proposal for a new ontology and
+ N3 format for RDF + OWL + rules projects</a></p>
+
+ <p></p>
+ </td>
</tr>
<tr>
<td>1.4.1 aller vers un EulerGUI autog\xE9n\xE9r\xE9</td>
<td></td>
- <td>pouvoir int\xE9grer commod\xE9ment du code Java existant</td>
+ <td>d\xE9j\xE0 pouvoir int\xE9grer commod\xE9ment du code Java existant et des r\xE8gles
+ dans le EulerGUI existant</td>
</tr>
<tr>
<td>1.5 int\xE9grer dans la cha\xEEne l'outil Attempto Ace View, pour pouvoir
entrer les mod\xE8les, r\xE8gles, et donn\xE9es en Anglais Controll\xE9</td>
<td></td>
- <td>cela implique: soit de traduire le SWRL en logique N3, soit
- d'utiliser Pellet + API Prot\xE9g\xE9 / OWL API (qui prennent du SWRL) \xE0 la
- place du moteur Drools / N3 de EulerGUI</td>
+ <td>cela implique:
+ <ul>
+ <li>soit de traduire le SWRL en logique N3, </li>
+ <li>soit d'adapter le code Prolog existant qui g\xE9n\xE9rer du
+ OWL+SWRL</li>
+ <li>soit d'utiliser Pellet + API Prot\xE9g\xE9 / OWL API (qui prennent du
+ SWRL) \xE0 la place du moteur Drools / N3 de EulerGUI</li>
+ </ul>
+ </td>
</tr>
<tr>
<td>1.6 \xE9diteur N3 int\xE9gr\xE9 en Java: ajouter diverses facilit\xE9s : Control
@@ -203,7 +227,12 @@
propri\xE9t\xE9s et classes non d\xE9clar\xE9es par ailleurs</p>
</td>
<td></td>
- <td></td>
+ <td>une base de r\xE8gles existe d\xE9j\xE0, qui avertit des propri\xE9t\xE9s non
+ d\xE9clar\xE9es:
+
+ <p>voir <a
+ href="deductions/n3_new/model-rules-coherence.n3p">deductions/n3_new/model-rules-coherence.n3p</a></p>
+ </td>
</tr>
<tr>
<td>1.9 requ\xEAtes param\xE9tr\xE9es (alias query en Drools)</td>
@@ -349,11 +378,9 @@
</tr>
</tbody>
</table>
-<ul>
- <li></li>
- <li></li>
-</ul>
<p></p>
+
+<p></p>
</body>
</html>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-21 12:37:26
|
Revision: 1335
http://eulergui.svn.sourceforge.net/eulergui/?rev=1335&view=rev
Author: jmvanel
Date: 2010-03-21 12:37:18 +0000 (Sun, 21 Mar 2010)
Log Message:
-----------
n3_rules_good_practices.html : WIP
Modified Paths:
--------------
trunk/eulergui/html/n3_rules_good_practices.html
Modified: trunk/eulergui/html/n3_rules_good_practices.html
===================================================================
--- trunk/eulergui/html/n3_rules_good_practices.html 2010-03-19 20:34:52 UTC (rev 1334)
+++ trunk/eulergui/html/n3_rules_good_practices.html 2010-03-21 12:37:18 UTC (rev 1335)
@@ -5,13 +5,329 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>N3 rules good practices</title>
+ <style type="text/css">
+
+ .CREATION {color:#09b409;
+font-weight:bold; }</style>
<meta name="generator" content="Amaya, see http://www.w3.org/Amaya/" />
</head>
<body>
+<p style="font-size: 20pt">N3 rules: good practices, design patterns,
+refactoring</p>
-<h2>N3 refactoring: extract part of antecedent</h2>
+<p>\xA9 Jean-Marc Vanel - $Date$</p>
+<p>TOC</p>
+
+<div class="toc">
+<ul>
+ <li><a href="#L470">Introduction</a></li>
+ <li><a href="#L587">The limitations of RDF</a>
+ <ul>
+ <li><a href="#L930">Open world assumption</a></li>
+ <li><a href="#L1262">Monotonicity</a></li>
+ </ul>
+ </li>
+ <li><a href="#L593">The limitations of N3 logic</a></li>
+ <li><a href="#L944">Using OWL ontologies</a></li>
+ <li><a href="#L387">Variables patterns</a>
+ <ul>
+ <li><a href="#L398">Quantification</a></li>
+ <li><a href="#L420">Multiple occurences</a></li>
+ </ul>
+ </li>
+ <li><a href="#L180">Design patterns</a>
+ <ul>
+ <li><a href="#L432">Annotate the existing objects</a></li>
+ <li><a href="#L445">Create new objects</a></li>
+ </ul>
+ </li>
+ <li><a href="#L557">Data structures</a></li>
+ <li><a href="#L255">Lists variants</a>
+ <ul>
+ <li><a href="#L215">Lists OWL style</a></li>
+ <li><a href="#L303">Cloning a list</a></li>
+ <li><a href="#L170">Accumulating by recursion</a></li>
+ </ul>
+ </li>
+ <li><a href="#L26">N3 refactorings</a>
+ <ul>
+ <li><a href="#L135">Extract part of antecedent</a></li>
+ </ul>
+ </li>
+</ul>
+</div>
+
+<h2 id="L470">Introduction</h2>
+
+<p>This is a tutorial on writing N3 rules, and various design patterns.</p>
+
+<p>It will address issues of business rules, transformations, validation,
+processing lists, etc..</p>
+
+<p>There is little material directly on the N3 rules, but there are things
+about other rule languages: SWRL, Drools, etc..</p>
+
+<p><a href="http://www.google.fr/search?q=SWRL+design+pattern">Google search
+SWRL+design+pattern</a></p>
+
+<p><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ">Prot\xE9g\xE9
+wiki SWRL Language FAQ</a></p>
+
+<p></p>
+
+<p>http://en.wikipedia.org/wiki/Graph_rewriting</p>
+
+<p>http://rewriting.loria.fr/</p>
+
+<p>http://en.wikipedia.org/wiki/Rewriting</p>
+
+<p></p>
+
+<p>Throughout this document, we will put variables corresponding to resource
+(object) creation, that is existentially qualified variables, in <span
+class="CREATION">bold green</span>.</p>
+
+<p><strong>Abreviations</strong></p>
+
+<p>KB == Knowledge Base</p>
+
+<p>LSH == Left Hand Side (a.k.a. antecedent) </p>
+
+<p>RSH == Right Hand Side (a.k.a. consequent) </p>
+
+<p></p>
+
+<h2 id="L587">The limitations of RDF</h2>
+
+<p>The whole point of this paragraph is that there is really no limitation.</p>
+
+<p>First let's say that in terms of expressive power for an object graph data
+language, there is no limitation. Everything that can be expressed in XML, XMI,
+SQL, JSON, can also be expressed in RDF and N3. Moreover, RDF is by design
+adapted to Internet: URI are globally unique identifiers that can be
+dererenced, and it has SWRL for query language and protocol.</p>
+
+<p>Then the principles of the Semantic Web imply the Open World Assumption,
+which is a necessary limitation for the huge and ever changing Web.</p>
+
+<h3 id="L930"><a
+href="http://www.betaversion.org/~stefano/linotype/news/91/">Open world
+assumption</a></h3>
+
+<p>The closed world assumption implies that everything we don’t know is
+false, while the open world assumption states that everything we don’t
+know is undefined. </p>
+
+<p>The closed world is the point of vue of all databases, except RDF databases.
+Related to closed world assumption, there is a the unique name assumption,
+which mean that a concept has a unique string representation (URI in RDF case);
+or converselly two different string representations are necessarily distinct
+concepts.</p>
+
+<p>The semantic web, N3 logic, and OWL, are based on Open World Assumption. But
+we will see later that there are extension builtins predicates that allow some
+features of closed world.</p>
+
+<h3 id="L1262">Monotonicity</h3>
+
+<p>Monotonicity means that learning a new piece of (non contradictory)
+knowledge cannot reduce the set of what is known ( taken from <a
+href="http://en.wikipedia.org/wiki/Non-monotonic_logic">wikipedia.org /
+Non-monotonic_logic</a> ). This is closely related to Open World Assumption.</p>
+
+<p>A monotonic logic forbids such things as default reasoning ( birds fly
+except ostriches ).</p>
+
+<p>For the same reason, global negation is forbiden ( "no Papuan pilots an
+airplane" ). The authors of N3 logic invented "scoped negation" as a weaker
+form of negation; see the paragraph "Motivation" of <a
+href="http://www.w3.org/DesignIssues/N3Logic">DesignIssues / N3Logic</a> .</p>
+
+<h2 id="L593">The limitations of N3 logic</h2>
+
+<p>The original N3 logic (like SWRL) follows strictly the principles of the
+Semantic Web: Open World Assumption, no Unique Name Assumption, and
+monotonicity.</p>
+
+<p>However, the orignal CWM, Euler and Drools/N3 engines have builtins
+predicates that allow some features of closed world:</p>
+<ul>
+ <li><code>log:equalTo</code> and <code>log:notEqualTo</code> allows a form of
+ Unique Name Assumption</li>
+ <li><code>e:findall</code> allows to by-pass monotonicity; example: find all
+ married couples with more than 1 child: <a
+ href="../test/findall2.n3">test/findall2.n3</a></li>
+</ul>
+
+<p>Breaking monotonicity is not a problem if one is aware of the underlying
+principles. In this respect it is not recommanded to add to the current KB the
+consequences of non-monotonic rules. EulerGUI should flag rules and documents
+containing such rules.</p>
+
+<h2 id="L944">Using OWL ontologies</h2>
+
+<p>add the revelant rules from Euler project. </p>
+
+<p>???</p>
+
+<h2 id="L387">Variables patterns</h2>
+
+<h3 id="L398">Quantification</h3>
+
+<p>existential, universal</p>
+
+<p>variable binding</p>
+
+<p>???</p>
+
+<h3 id="L420">Multiple occurences</h3>
+
+<p>Multiple occurences in LHS means adding constraints, which diminishes the
+set of matching statements for the rule.</p>
+
+<p>Multiple occurences in RHS means adding new statements to the KB.</p>
+
+<h2 id="L180">Design patterns</h2>
+
+<h3 id="L432">Annotate the existing objects</h3>
+
+<p>This is the simplest pattern, and the most efficient on all engines. It is
+particuliar adapted to problems with a 1 to 1 correspondence between the
+asserted objects and the inferred objects. It is opposed to the following
+pattern "Create new objects".</p>
+
+<h3 id="L445">Create new objects</h3>
+
+<p>keep track</p>
+
+<p>often not possible with Euler engine</p>
+
+<p>???</p>
+
+<h2 id="L557">Data structures</h2>
+
+<p>No sets ? Why ? Because ordinary RDF properties act as sets.</p>
+
+<p>RDF is a bunch of associative arrays (called maps in Java and C++). ????</p>
+
+<h2 id="L255">Lists variants</h2>
+
+<p>RDF lists, OWL, linked list.</p>
+
+<p>transitive properties</p>
+
+<h3 id="L215">Lists OWL style</h3>
+
+<p>????</p>
+
+<p>There is a paper describing the list pattern in OWL:</p>
+
+<p>Drummond, N., Rector, A.L., Stevens, R., Moulton, G., Horridge, M., Wang, H,
+Seidenberg, J. Putting OWL in Order: Patterns for Sequences in OWL, in 2nd OWL
+Experiences and Directions Workshop, Athens, GA</p>
+
+<p><a
+href="http://www.webont.org/owled/2006/acceptedLong/submission_12.pdf">http://www.webont.org/owled/2006/acceptedLong/submission_12.pdf</a></p>
+
+<p></p>
+
+<h3 id="L303">Cloning a list</h3>
+
+<p>Here is an example with user specific :first and :rest properties , <a
+href="../examples/clone-list-forward.n3">clone-list-forward.n3</a>. It clones
+the list in the forward direction.</p>
+<pre>{ ?L :first ?F .
+ ?L :rest ?R .
+ ?LC :clone_of ?L .
+} => {
+ ?LC :first ?F .
+ ?LC :rest <strong><span class="CREATION">?<span style="font-weight:bold;"></span>RC</span></strong> .
+ <span class="CREATION">?RC</span> :clone_of ?R .
+} .</pre>
+
+<p>It must be provided with a start statement, e.g.:</p>
+<pre>:newNode :clone_of :existingNode .</pre>
+
+<p></p>
+
+<p>Due to limitations in Euler/Eye engine, it is not possible to generate
+rdf:first and rdf:rest properties. However, this is possible </p>
+
+<p>with Drools/N3 engine. With both engines, it is possible to to clone an RDF
+list using a rule similar to the above, matching rdf:first and rdf:rest
+properties in the LSH : <a
+href="../examples/clone-rdf-list-forward.n3">clone-rdf-list-forward.n3</a> .</p>
+
+<p></p>
+
+<p>Here is another example with user specific :first and :rest properties, <a
+href="../examples/clone-list.n3">clone-list.n3</a>. It clones the list in the
+"backward" direction, that is starting from the end.</p>
+<pre>{ # initial condition
+ ?L :first ?F .
+ ?L :rest :nil .
+} => {
+ <span class="CREATION">?LC</span> :first ?F .
+ <span class="CREATION">?LC</span> :rest_clone :nil .
+ <span class="CREATION">?LC</span> :clone_of ?L .
+} .
+{ # recursion
+ ?L :first ?F .
+ ?L :rest ?R .
+ ?RC :clone_of ?R .
+} => {
+ ?LC :first ?F .
+ ?LC :rest_clone ?RC .
+ ?LC :clone_of ?L .
+} .</pre>
+
+<p></p>
+
+<p>Note the difference in semantics with the preceding example, where the
+cloning was triggered by a "start statement". Here, whenever there is a list
+made with the :first and :rest properties, a clone is created.</p>
+
+<p></p>
+
+<p>These examples are just design patterns. I real life, for cloning to be
+useful, domain logic will be added, like:</p>
+<ul>
+ <li>filtering some items in the list (e.g. creating a list of good customers
+ from a list of customers)</li>
+ <li>assigning some properties to the cloned nodes (e.g. associating a sales
+ representative to each customer in the list)</li>
+</ul>
+
+<p></p>
+
+<h3 id="L170">Accumulating by recursion</h3>
+
+<p>Itinerary is a linked list, and each Itinerary is also a step.</p>
+<pre>{
+ ?I a itin:Itinerary .
+ ?I itin:distance ?D .
+ ?I list:hasNext ?N .
+ ?N :totalDistance ?NT .
+ (?D ?NT) math:sum ?T .
+} => {
+ ?I :totalDistance ?T .
+} .
+
+{
+ ?I a itin:Itinerary .
+ ?I list:hasNext itin:emptyItinerary .
+} => {
+ ?I :totalDistance 0.0 .
+} .</pre>
+
+<p></p>
+
+<h2 id="L26">N3 refactorings</h2>
+
+<h3 id="L135">Extract part of antecedent</h3>
+
<p><strong>Motivation</strong></p>
<p>Suppose the original rule OR is writen as :</p>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-19 20:34:59
|
Revision: 1334
http://eulergui.svn.sourceforge.net/eulergui/?rev=1334&view=rev
Author: jmvanel
Date: 2010-03-19 20:34:52 +0000 (Fri, 19 Mar 2010)
Log Message:
-----------
remove compilation errors; now tests pass
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/controller/ApplicationKB.java
Removed Paths:
-------------
trunk/eulergui/src/main/java/eulergui/gui/view/N3TokenMarker.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/controller/ApplicationKB.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/controller/ApplicationKB.java 2010-03-19 09:52:50 UTC (rev 1333)
+++ trunk/eulergui/src/main/java/eulergui/gui/controller/ApplicationKB.java 2010-03-19 20:34:52 UTC (rev 1334)
@@ -15,7 +15,7 @@
private static ApplicationKB instance_;
- public static ApplicationKB instance() throws ParserException {
+ public static ApplicationKB instance() {
if( instance_ == null ) {
instance_ = new ApplicationKB();
}
@@ -24,7 +24,7 @@
private TripleStoreDrools tripleStore;
- private ApplicationKB() throws ParserException {
+ private ApplicationKB() {
Project project = new Project();
URL url = getClass().getResource("project.owl.n3");
@@ -37,7 +37,12 @@
// compile rules:
project.compileSearches();
- project.prepareDrools();
+ try {
+ project.prepareDrools();
+ } catch (ParserException e) {
+ // Auto-generated catch block
+ e.printStackTrace();
+ }
project.getTranslator().copyN3factsToDrools();
tripleStore = TripleStoreDrools.createFromProject(project);
}
Deleted: trunk/eulergui/src/main/java/eulergui/gui/view/N3TokenMarker.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/N3TokenMarker.java 2010-03-19 09:52:50 UTC (rev 1333)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/N3TokenMarker.java 2010-03-19 20:34:52 UTC (rev 1334)
@@ -1,24 +0,0 @@
-/**
- *
- */
-package eulergui.gui.view;
-
-import org.syntax.jedit.KeywordMap;
-import org.syntax.jedit.tokenmarker.ShellScriptTokenMarker;
-import org.syntax.jedit.tokenmarker.Token;
-
-class N3TokenMarker extends
-// CTokenMarker
- ShellScriptTokenMarker
- {
- private static KeywordMap n3Keywords;
- public static KeywordMap getKeywords() {
- if(n3Keywords == null) {
- n3Keywords = new KeywordMap(false);
- n3Keywords.add("@prefix",Token.KEYWORD3);
- n3Keywords.add("a",Token.KEYWORD2);
- n3Keywords.add("=>",Token.KEYWORD2);
- }
- return n3Keywords;
- }
- }
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-19 09:52:57
|
Revision: 1333
http://eulergui.svn.sourceforge.net/eulergui/?rev=1333&view=rev
Author: jmvanel
Date: 2010-03-19 09:52:50 +0000 (Fri, 19 Mar 2010)
Log Message:
-----------
documentation.html : add details on:
- Finding ontologies on the Web
- Maven: try something locally
Modified Paths:
--------------
trunk/eulergui/html/documentation.html
Modified: trunk/eulergui/html/documentation.html
===================================================================
--- trunk/eulergui/html/documentation.html 2010-03-19 09:50:16 UTC (rev 1332)
+++ trunk/eulergui/html/documentation.html 2010-03-19 09:52:50 UTC (rev 1333)
@@ -11,7 +11,7 @@
<body>
<p style="text-align:center;font-size: 20pt">Euler GUI Manual</p>
-<p>© Jean-Marc Vanel - $Date: 2010-03-15$ - <a
+<p>© Jean-Marc Vanel - $Date: 2010-03-19$ - <a
href="http://eulergui.sourceforge.net/documentation.html">a view possibly older
in sync. with EulerGUI release </a> - <a
href="http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html">Latest
@@ -23,15 +23,15 @@
<ul>
<li><a href="#Introducti">Introduction</a></li>
<li><a href="#Features">Features</a></li>
- <li><a href="#Installati">Installation</a>
+ <li><a href="#Installati">Installation</a>
<ul>
- <li><a href="#Prerequisi">Prerequisite</a>
+ <li><a href="#Prerequisi">Prerequisite</a>
<ul>
<li><a href="#Additional">Additional steps on Mac</a></li>
</ul>
</li>
<li><a href="#Install1">Install and run EulerGUI</a></li>
- <li><a href="#Install">Install external tools</a>
+ <li><a href="#Install">Install external tools</a>
<ul>
<li><a href="#L702">Facultative tool</a></li>
</ul>
@@ -39,10 +39,10 @@
</ul>
</li>
<li><a href="#L3298">Support & community</a></li>
- <li><a href="#cases">Use cases</a>
+ <li><a href="#cases">Use cases</a>
<ul>
<li><a href="#Main">Main use case</a></li>
- <li><a href="#Inference">Inference engines</a>
+ <li><a href="#Inference">Inference engines</a>
<ul>
<li><a href="#case">CWM use case</a></li>
<li><a href="#Drools">Drools use case</a></li>
@@ -50,16 +50,16 @@
</ul>
</li>
<li><a href="#L3796">Which rule engine to use?</a></li>
- <li><a href="#Data">Data sources</a>
+ <li><a href="#Data">Data sources</a>
<ul>
<li><a href="#Reading">Reading XMI files (UML or eCore)</a></li>
- <li><a href="#Reading2">Reading plain XML files or XML Schema</a>
+ <li><a href="#Reading2">Reading plain XML files or XML Schema</a>
<ul>
<li><a href="#L2297">Redefer</a></li>
<li><a href="#L2290">Gloze</a></li>
</ul>
</li>
- <li><a href="#SPARQL">SPARQL queries as N3 sources</a>
+ <li><a href="#SPARQL">SPARQL queries as N3 sources</a>
<ul>
<li><a href="#L1134">SPARQL language</a></li>
<li><a href="#L2107">Caveats</a></li>
@@ -68,7 +68,7 @@
</ul>
</li>
<li><a href="#Reading1">Reading UML Textual files, UMT (simplified
- UML )</a>
+ UML )</a>
<ul>
<li><a href="#Syntax">Syntax</a></li>
<li><a href="#Usage">Usage</a></li>
@@ -76,7 +76,7 @@
</li>
</ul>
</li>
- <li><a href="#L939">Manipulating projects</a>
+ <li><a href="#L939">Manipulating projects</a>
<ul>
<li><a href="#L1191">Sub-projects</a></li>
<li><a href="#L1200">Pipeline of projects (post-processing)</a></li>
@@ -86,14 +86,14 @@
<li><a href="#Finding1">Finding data on the Web</a></li>
<li><a href="#Finding11">Finding rules on the Web; rules for OWL
concepts</a></li>
- <li><a href="#Global1">Local tools</a>
+ <li><a href="#Global1">Local tools</a>
<ul>
<li><a href="#Show">Show graph</a></li>
<li><a href="#Show1">Show N3 parse tree</a></li>
<li><a href="#Show2">Show original source of N3 document</a></li>
</ul>
</li>
- <li><a href="#Global">Global tools</a>
+ <li><a href="#Global">Global tools</a>
<ul>
<li><a href="#L3377">Search</a></li>
<li><a href="#Generate">Generate Java code</a></li>
@@ -102,12 +102,12 @@
<li><a href="#L33241">Export as XML</a></li>
</ul>
</li>
- <li><a href="#Interopera">Interoperability with Protégé</a>
+ <li><a href="#Interopera">Interoperability with Protégé</a>
<ul>
<li><a href="#L3588">SWRL</a></li>
</ul>
</li>
- <li><a href="#L2935">Interoperability with RDF SPARQL servers</a>
+ <li><a href="#L2935">Interoperability with RDF SPARQL servers</a>
<ul>
<li><a href="#L2943">Joseki</a></li>
<li><a href="#L2958">Sesame</a></li>
@@ -117,21 +117,21 @@
</ul>
</li>
<li><a href="#Examples">Examples</a></li>
- <li><a href="#L3193">Other useful tools</a>
+ <li><a href="#L3193">Other useful tools</a>
<ul>
<li><a href="#L3221">Export from N3/RDF</a></li>
<li><a href="#L3234">Import to N3/RDF</a></li>
</ul>
</li>
<li><a href="#N-Triple">N-Triples, Turtle, and N3 formats</a></li>
- <li><a href="#Logic">Logic</a>
+ <li><a href="#Logic">Logic</a>
<ul>
<li><a href="#Logic1">N3 Logic</a></li>
<li><a href="#Coherent">Coherent Logic</a></li>
<li><a href="#buit-ins">CWM built-ins</a></li>
<li><a href="#Euler">Euler built-ins</a></li>
<li><a href="#EulerGUI">EulerGUI Drools N3 engine built-ins</a></li>
- <li><a href="#Translatin">Translating N3 into Drools language</a>
+ <li><a href="#Translatin">Translating N3 into Drools language</a>
<ul>
<li><a href="#Forward">Forward chaining engine and First Order
Logic</a></li>
@@ -143,19 +143,19 @@
</li>
</ul>
</li>
- <li><a href="#TODO">Missing features</a>
+ <li><a href="#TODO">Missing features</a>
<ul>
<li><a href="#Implemente">Implemented features</a></li>
</ul>
</li>
- <li><a href="#Developmen">Development</a>
+ <li><a href="#Developmen">Development</a>
<ul>
<li><a href="#Building">Building from sources</a></li>
<li><a href="#Create">Create an eclipse project</a></li>
<li><a href="#Uploading">Compiling dependencies and uploading them on the
Maven repository on Sourceforge</a></li>
<li><a href="#Making">Making a release</a></li>
- <li><a href="#Test">Test</a>
+ <li><a href="#Test">Test</a>
<ul>
<li><a href="#L1845">Accelerate tests</a></li>
<li><a href="#L1980">Gui functional tests</a></li>
@@ -165,7 +165,7 @@
<li><a href="#Debug">Debug</a></li>
</ul>
</li>
- <li><a href="#Architectu">Architecture</a>
+ <li><a href="#Architectu">Architecture</a>
<ul>
<li><a href="#Actual">Actual stuff</a></li>
<li><a href="#Stuff">Stuff to refactor</a></li>
@@ -1190,6 +1190,19 @@
<h3 id="Finding">Finding ontologies on the Web</h3>
+<p>First you can add one of these criteria to any Google search (thanks to
+Francis LAPIQUE for this trick):</p>
+
+<p>filetype:rdfs filetype:owl filetype:n3 filetype:xsd filetype:uml
+filetype:ecore filetype:xmi , etc.</p>
+
+<p>And don't forget that, once you have found something that looks good, you
+can <strong>drag and drop it on EulerGUI</strong>, to see it in N3.</p>
+
+<p></p>
+
+<p>Here is a table of search engines and repositories for ontologies.</p>
+
<table border="1">
<tbody>
<tr>
@@ -2657,6 +2670,12 @@
<p><a
href="http://eulergui.sourceforge.net/maven2">http://eulergui.sourceforge.net/maven2</a></p>
+<p></p>
+
+<p>In the recipies below, it is also possible to try something locally without
+uploading on the remote repository. To do this, use this argument:</p>
+<pre>-Durl=file:${HOME}/.m2/repository/</pre>
+
<p><strong>Parser4J</strong></p>
<p>Do this to upload on the EulerGUI Maven repository on Sourceforge the latest
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-19 09:50:22
|
Revision: 1332
http://eulergui.svn.sourceforge.net/eulergui/?rev=1332&view=rev
Author: jmvanel
Date: 2010-03-19 09:50:16 +0000 (Fri, 19 Mar 2010)
Log Message:
-----------
pom.xml : migrate to latest (full) jedit 4.3.1
TODO : Tests in error:
testURLProjectOWL(eulergui.gui.TestJavaEditor)
testURLProject(eulergui.gui.TestJavaEditor)
Modified Paths:
--------------
trunk/eulergui/pom.xml
Modified: trunk/eulergui/pom.xml
===================================================================
--- trunk/eulergui/pom.xml 2010-03-18 18:31:02 UTC (rev 1331)
+++ trunk/eulergui/pom.xml 2010-03-19 09:50:16 UTC (rev 1332)
@@ -544,12 +544,19 @@
<scope>test</scope>
</dependency>
-<dependency>
+<!--dependency>
<groupId>net.sf.jedit-syntax</groupId>
<artifactId>jedit-syntax</artifactId>
<version>2.2.2</version>
+</dependency-->
+
+<dependency>
+ <groupId>org.jedit</groupId>
+ <artifactId>jedit</artifactId>
+ <version>4.3.1</version>
</dependency>
+
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-18 18:31:12
|
Revision: 1331
http://eulergui.svn.sourceforge.net/eulergui/?rev=1331&view=rev
Author: iamlolive
Date: 2010-03-18 18:31:02 +0000 (Thu, 18 Mar 2010)
Log Message:
-----------
new version of the jedit editor.
should roughly work.
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java
trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java
trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java
trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -8,18 +8,20 @@
import javax.swing.AbstractAction;
-import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
import eulergui.gui.view.TextEditor;
import eulergui.project.N3Source;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
public class Save extends AbstractAction {
private static final long serialVersionUID = 1L;
private N3Source n3Source;
- private JEditTextArea embededEditor;
+ private StandaloneTextArea embededEditor;
private TextEditor textEditor;
- public Save( JEditTextArea embededEditor, TextEditor textEditor ) {
+ public Save( StandaloneTextArea embededEditor, TextEditor textEditor ) {
this.embededEditor = embededEditor;
this.textEditor = textEditor;
this.n3Source = textEditor.get3NSource();
Modified: trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -8,9 +8,11 @@
import n3_project.ProjectGUI;
-import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
import eulergui.gui.view.TextEditor;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
public class SaveAs extends Save // AbstractAction
{
@@ -18,7 +20,7 @@
private ProjectGUI projectGUI;
public SaveAs(TextEditor textEditor, ProjectGUI projectGUI,
- JEditTextArea embededEditor) {
+ StandaloneTextArea embededEditor) {
super(embededEditor, textEditor);
this.projectGUI = projectGUI;
putValue(NAME, "Save as ...");
Modified: trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -6,17 +6,19 @@
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
-import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
import eulergui.inputs.N3SourceFromOtherFormat;
import eulergui.project.N3Source;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
public class Statistics extends AbstractAction {
private static final long serialVersionUID = 1L;
private N3Source n3Source;
- private JEditTextArea embededEditor;
+ private StandaloneTextArea embededEditor;
- public Statistics(N3Source n3, JEditTextArea embededEditor) {
+ public Statistics(N3Source n3, StandaloneTextArea embededEditor) {
this.n3Source = n3;
this.embededEditor = embededEditor;
putValue(NAME, "Statistics...");
@@ -40,9 +42,9 @@
.append( n3Source.getKnownURIs() )
.append( "\nDocument Length: " )
- .append( embededEditor.getDocumentLength() )
+ .append( embededEditor.getText().length() )
.append( "\nLine Count: " )
- .append( embededEditor.getDocument().getTokenMarker().getLineCount() )
+ .append( embededEditor.getLineCount() )
;
System.out.println( sb ); // TODO message panel
}
Modified: trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -1,7 +1,6 @@
package eulergui.gui.view;
import java.awt.*;
-import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
@@ -21,22 +20,31 @@
import javax.swing.JMenuBar;
import javax.swing.WindowConstants;
import javax.swing.event.DocumentEvent;
-import javax.swing.text.BadLocationException;
+import javax.swing.text.Segment;
import n3_project.EditorManagement;
import n3_project.ProjectGUI;
-import org.syntax.jedit.JEditTextArea;
-import org.syntax.jedit.SyntaxDocument;
-import org.syntax.jedit.TextAreaPainter;
-import org.syntax.jedit.tokenmarker.ShellScriptTokenMarker;
-import org.syntax.jedit.tokenmarker.TokenMarker;
-import org.syntax.jedit.tokenmarker.XMLTokenMarker;
+import org.gjt.sp.jedit.buffer.BufferListener;
+import org.gjt.sp.jedit.buffer.JEditBuffer;
+import org.gjt.sp.jedit.jEdit;
+import org.gjt.sp.jedit.syntax.TokenMarker;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.SyntaxDocument;
+//import org.syntax.jedit.TextAreaPainter;
+//import org.syntax.jedit.tokenmarker.ShellScriptTokenMarker;
+//import org.syntax.jedit.tokenmarker.TokenMarker;
+//import org.syntax.jedit.tokenmarker.XMLTokenMarker;
import eulergui.gui.actions.Save;
import eulergui.gui.actions.SaveAs;
import eulergui.gui.actions.Statistics;
import eulergui.project.N3Source;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
+import org.gjt.sp.jedit.textarea.TextAreaExtension;
+import org.gjt.sp.jedit.textarea.TextAreaPainter;
+import org.gjt.sp.util.Log;
/**
* a Text Editor factory, mainly for N3;
@@ -48,52 +56,125 @@
private static Map<String, TokenMarker> suffix2syntax
= new HashMap<String, TokenMarker>();
- private DocumentListener listener;
+ //private DocumentListener listener;
private N3Source n3;
private boolean edited;
- private JEditTextArea jedit;
+ private StandaloneTextArea jedit;
public JFrame jf;
static {
- suffix2syntax.put("n3", new N3TokenMarker());
- suffix2syntax.put("ttl", new N3TokenMarker());
- suffix2syntax.put("nt", new N3TokenMarker());
- suffix2syntax.put("sparql", new N3TokenMarker());
- suffix2syntax.put("xml", new XMLTokenMarker());
- suffix2syntax.put("xsd", new XMLTokenMarker());
- suffix2syntax.put("rdf", new XMLTokenMarker());
- suffix2syntax.put("owl", new XMLTokenMarker());
- suffix2syntax.put("uml", new XMLTokenMarker());
- suffix2syntax.put("xmi", new XMLTokenMarker());
- suffix2syntax.put("ecore", new XMLTokenMarker());
- suffix2syntax.put("mof", new XMLTokenMarker());
- suffix2syntax.put("emof", new XMLTokenMarker());
- suffix2syntax.put("cmof", new XMLTokenMarker());
- suffix2syntax.put("umlt", new ShellScriptTokenMarker());
+ //TODO did not find yet how to do these stuff with the new jEdit
+// suffix2syntax.put("n3", new N3TokenMarker());
+// suffix2syntax.put("ttl", new N3TokenMarker());
+// suffix2syntax.put("nt", new N3TokenMarker());
+// suffix2syntax.put("sparql", new N3TokenMarker());
+// suffix2syntax.put("xml", new XMLTokenMarker());
+// suffix2syntax.put("xsd", new XMLTokenMarker());
+// suffix2syntax.put("rdf", new XMLTokenMarker());
+// suffix2syntax.put("owl", new XMLTokenMarker());
+// suffix2syntax.put("uml", new XMLTokenMarker());
+// suffix2syntax.put("xmi", new XMLTokenMarker());
+// suffix2syntax.put("ecore", new XMLTokenMarker());
+// suffix2syntax.put("mof", new XMLTokenMarker());
+// suffix2syntax.put("emof", new XMLTokenMarker());
+// suffix2syntax.put("cmof", new XMLTokenMarker());
+// suffix2syntax.put("umlt", new ShellScriptTokenMarker());
+ jEdit.initSystemProperties();
+ Log.init(true, Log.DEBUG);
}
- public void setOnTop(){
- if(jf!=null) {
+ public void setOnTop() {
+ if (jf != null) {
jf.setAlwaysOnTop(true);
jf.setAlwaysOnTop(false);
}
}
- public void addWindowListener(WindowListener l){
- if(jf!=null)
+ public void addWindowListener(WindowListener l) {
+ if (jf != null)
jf.addWindowListener(l);
}
- public void removeWindowListener(WindowListener l){
- if(jf!=null)
+ public void removeWindowListener(WindowListener l) {
+ if (jf != null)
jf.removeWindowListener(l);
}
+ public void displayEditor(ProjectGUI projectGUI, String toOpen) {
+ JFrame jf = new JFrame();
+
+ JComponent embededEditor = insertFileOrURL(toOpen);
+ applySyntax(toOpen);
+ JMenuBar menuBar = new JMenuBar();
+ jf.setJMenuBar(menuBar);
+ JMenu file = new JMenu("File");
+ menuBar.add(file);
+ SaveAs saveAs = new SaveAs(this, projectGUI,
+ (StandaloneTextArea) embededEditor);
+ Save save = new Save((StandaloneTextArea) embededEditor, this);
+ file.add(save);
+ file.add(saveAs);
+
+ jf.getContentPane().add(embededEditor);
+ jf.setSize(800, 600);
+ jf.setTitle(toOpen);
+ jf.setVisible(true);
+ ProjectGUI.setEulerGUIIcon(jf);
+
+ jf.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ jf.addWindowListener(new WindowListener() {
+
+ @Override
+ public void windowOpened(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowClosing(WindowEvent e) {
+ if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+ if (edited) {
+ System.err.println("The document \""
+ + getN3().getFileName()
+ + "\" has been edited, you must save it first.");
+ // TODO it should not close, but it does !!!
+ } else {
+ ((Window) e.getSource()).dispose();
+ }
+ }
+ }
+
+ @Override
+ public void windowClosed(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowIconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeiconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowActivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeactivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+ }
+
/**
* display N3 Editor in a new Window, with save As and Statistics in File menu
*/
public void displayEditor(ProjectGUI projectGUI, N3Source n3) {
- try {
+
jf = new JFrame(
EditorManagement.fileToOpen(n3));
JComponent embededEditor = embedEditor(n3);
@@ -103,11 +184,11 @@
JMenu file = new JMenu("File");
menuBar.add(file);
SaveAs saveAs = new SaveAs(this, projectGUI,
- (JEditTextArea) embededEditor);
- Save save = new Save((JEditTextArea) embededEditor, this);
+ (StandaloneTextArea) embededEditor);
+ Save save = new Save((StandaloneTextArea) embededEditor, this);
file.add(save);
file.add(saveAs);
- file.add(new Statistics(n3, (JEditTextArea) embededEditor));
+ file.add(new Statistics(n3, (StandaloneTextArea) embededEditor));
jf.getContentPane().add(embededEditor);
jf.setSize(800, 600);
@@ -116,27 +197,75 @@
ProjectGUI.setEulerGUIIcon(jf);
jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- listener = new DocumentListener();
- jf.addWindowListener(listener);
- } catch (HeadlessException e) {
- e.printStackTrace();
- }
+// listener = new DocumentListener();
+ jf.addWindowListener(new WindowListener() {
+
+ @Override
+ public void windowOpened(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowClosing(WindowEvent e) {
+ if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+ if (edited) {
+ System.err.println("The document \""
+ + getN3().getFileName()
+ + "\" has been edited, you must save it first.");
+ // TODO it should not close, but it does !!!
+ } else {
+ ((Window) e.getSource()).dispose();
+ }
+ }
+ }
+
+ @Override
+ public void windowClosed(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowIconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeiconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowActivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeactivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+
}
+ public N3Source getN3() {
+ return n3;
+ }
+
/**
* embed N3 Editor in a JComponent
*/
public JComponent embedEditor(N3Source n3) {
this.n3 = n3;
- jedit = new JEditTextArea();
+ jedit = new StandaloneTextArea(jEdit.getPropertyManager());
String toOpen = EditorManagement.fileToOpen(n3);
insertFileOrURL(toOpen);
- applySyntax(n3.uri());
+ // TODO it fails with the newer jEdit
+ // applySyntax(n3.uri());
return jedit;
}
public void setCaretPosition(int line, int col) {
-
+
int position = jedit.getLineStartOffset(line) + col;
//TODO the parser erroneously places the end of line errors. They are placed at the beginning of the next line. We correct that behaviour (on purpose?)
if (col == 0)
@@ -145,9 +274,10 @@
}
private void setCaretPosition(int position) {
- jedit.setCaretVisible(true);
jedit.setCaretPosition(position);
- jedit.scrollToCaret();
+ // TODO does it exist in the new jEdit?
+ //jedit.getPainter().setCaretVisible(true);
+ //jedit.getPainter().scrollToCaret();
}
@@ -156,126 +286,189 @@
}
public void setToolTipText(String text) {
- final String toolTipText = (text == null ? null : "<HTML>" + text.replace("\n", "<br/>") + "</HTML>");
- final TextAreaPainter textAreaPainter = jedit.getPainter();
- textAreaPainter.addCustomHighlight(new TextAreaPainter.Highlight() {
+ errorText = (text == null ? null : "<HTML>" + text.replace("\n", "<br/>") + "</HTML>");
+ final TextAreaPainter painter = jedit.getPainter();
+ painter.addExtension(getErrorHighlighterExtension());
+ removeErrorHighlighterOnNextEdit();
+ }
- @Override
- public void init(JEditTextArea textArea, TextAreaPainter.Highlight next) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
+ public String errorText="";
+ public int errorLine = -1;
+ private TextAreaExtension errorHighlighterExtension = null;
- @Override
- public void paintHighlight(Graphics gfx, int line, int y) {
- }
+ public TextAreaExtension getErrorHighlighterExtension() {
+ if (errorHighlighterExtension == null) {
+ errorHighlighterExtension = new TextAreaExtension() {
- public String getToolTipText(MouseEvent evt) {
- return toolTipText;
- }
- });
+ public void paintValidLine(Graphics2D gfx, int screenLine, int physicalLine, int start, int end, int y) {
+ if(physicalLine!=errorLine){
+ super.paintValidLine(gfx, screenLine, physicalLine, start, end, y);
+ return;
+ }
+ try {
+ gfx.setColor(Color.RED);
+ TextAreaPainter painter = jedit.getPainter();
+ FontMetrics fm = painter.getFontMetrics();
- removeTooltipOnNextEdit();
+ Segment seg = null;
+
+
+ int x1 = (int) jedit.offsetToXY(jedit.getLineStartOffset(screenLine)).getX();
+ int y1 = y;
+ //int endingY = (int) ta.offsetToXY(ta.getLineEndOffset(physicalLine)).getY() - (int)ta.offsetToXY(ta.getLineStartOffset(physicalLine)).getY();
+ int height = fm.getHeight();
+ int width = jedit.getLineLength(screenLine) * jedit.charWidth;
+// Log.log(Log.DEBUG, this, "Width for line "+ physicalLine+"is calculated to: " + width);
+
+ //gfx.fillRect(x1, y1, width, height);
+ //gfx.setStroke( new BasicStroke( 10f ) );
+
+ gfx.drawLine(x1, y1 + height - 1, x1 + width, y1 + height - 1);
+ } catch (Exception e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+
+
+ public String getToolTipText(int x, int y) {
+ try {
+// int pos = jedit.xyToOffset(x, y);
+// int currentLine = jedit.getLineOfOffset(pos);
+// int width = jedit.getLineLength(currentLine) * jedit.charWidth;
+//
+// return "Width: " + width;
+ int off = jedit.xyToOffset(x, y);
+ int currentLine = jedit.getLineOfOffset(off);
+ if(currentLine == errorLine)
+ return errorText;
+ else
+ return "";
+ } catch (Exception e) {
+ return "";
+ }
+
+
+ }
+ };
+ }
+ return errorHighlighterExtension;
}
public void showError(String errorMessage, int lineNumber, int columnNumber) {
+ errorLine = lineNumber;
setToolTipText(errorMessage);
setCaretPosition(lineNumber, columnNumber);
setOnTop();
}
- public void removeTooltipOnNextEdit() {
- final DocumentListener tooltipRemover = new DocumentListener() {
+ public void removeErrorHighlighterOnNextEdit() {
+ final BufferListener errorHighlighter = new BufferListener() {
+
@Override
- public void removeUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setToolTipText(null);
- jedit.getDocument().removeDocumentListener(this);
+ public void foldLevelChanged(JEditBuffer jEditBuffer, int i, int i1) {
+ jedit.getPainter().removeExtension(getErrorHighlighterExtension());
+ errorHighlighterExtension = null;
+ errorText = "";
}
@Override
- public void insertUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setToolTipText(null);
- jedit.getDocument().removeDocumentListener(this);
+ public void contentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ jedit.getPainter().removeExtension(getErrorHighlighterExtension());
+ errorHighlighterExtension = null;
+ errorText = "";
}
@Override
- public void changedUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setToolTipText(null);
- jedit.getDocument().removeDocumentListener(this);
+ public void contentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ jedit.getPainter().removeExtension(getErrorHighlighterExtension());
+ errorHighlighterExtension = null;
+ errorText = "";
}
@Override
- public void windowClosing(WindowEvent e) {
- //super.windowClosing(e); //To change body of overridden methods use File | Settings | File Templates.
+ public void preContentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+
}
+
+ @Override
+ public void preContentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void transactionComplete(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void foldHandlerChanged(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void bufferLoaded(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
};
- jedit.getDocument().addDocumentListener(tooltipRemover);
+ jedit.getBuffer().addBufferListener(errorHighlighter);
}
public void removeAppendanceOnNextEdit() {
- final DocumentListener attendanceRemover = new DocumentListener() {
+ final BufferListener attendanceRemover = new BufferListener() {
+
@Override
- public void removeUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setTitleAppendance("");
- jedit.getDocument().removeDocumentListener(this);
+ public void foldLevelChanged(JEditBuffer jEditBuffer, int i, int i1) {
+ //To change body of implemented methods use File | Settings | File Templates.
}
@Override
- public void insertUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
+ public void contentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
setTitleAppendance("");
- jedit.getDocument().removeDocumentListener(this);
+ jedit.getBuffer().removeBufferListener(this);
+
}
@Override
- public void changedUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
+ public void contentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
setTitleAppendance("");
- jedit.getDocument().removeDocumentListener(this);
+ jedit.getBuffer().removeBufferListener(this);
}
@Override
- public void windowClosing(WindowEvent e) {
- //super.windowClosing(e); //To change body of overridden methods use File | Settings | File Templates.
+ public void preContentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
}
+
+ @Override
+ public void preContentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void transactionComplete(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void foldHandlerChanged(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void bufferLoaded(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
};
- jedit.getDocument().addDocumentListener(attendanceRemover);
+ jedit.getBuffer().addBufferListener(attendanceRemover);
}
/**
* display Editor in a new Window, with save As in File menu
*/
- public void displayEditor(ProjectGUI projectGUI, String toOpen) {
- JFrame jf = new JFrame();
- JComponent embededEditor = insertFileOrURL(toOpen);
- applySyntax(toOpen);
- JMenuBar menuBar = new JMenuBar();
- jf.setJMenuBar(menuBar);
- JMenu file = new JMenu("File");
- menuBar.add(file);
- SaveAs saveAs = new SaveAs(this, projectGUI,
- (JEditTextArea) embededEditor);
- Save save = new Save((JEditTextArea) embededEditor, this);
- file.add(save);
- file.add(saveAs);
- jf.getContentPane().add(embededEditor);
- jf.setSize(800, 600);
- jf.setTitle(toOpen);
- jf.setVisible(true);
- ProjectGUI.setEulerGUIIcon(jf);
-
- jf.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
- listener = new DocumentListener();
- jf.addWindowListener(listener);
- }
-
private JComponent insertFileOrURL(String toOpen) {
- jedit = new JEditTextArea();
+ jedit = new StandaloneTextArea(jEdit.getPropertyManager());
InputStream is = null;
try {
@@ -300,15 +493,58 @@
}
String text = builder.toString();
reader.close();
- SyntaxDocument document = new N3SyntaxDocument();
- jedit.setDocument(document);
+
+// SyntaxDocument document = new N3SyntaxDocument();
+// jedit.getBuffer().setDocument(document);
jedit.setText(text);
- document.addDocumentListener(listener);
+ jedit.getBuffer().addBufferListener(new BufferListener() {
+
+ @Override
+ public void foldLevelChanged(JEditBuffer jEditBuffer, int i, int i1) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void contentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ edited = true;
+ }
+
+ @Override
+ public void contentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ edited = true;
+ }
+
+ @Override
+ public void preContentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void preContentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void transactionComplete(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void foldHandlerChanged(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void bufferLoaded(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+ //document.addDocumentListener(listener);
// need to reset edited, because calling setText() has already
// set edited = true
edited = false;
}
- jedit.scrollTo(0, 0);
+ //jedit.getPainter().scrollTo(0, 0);
} catch (IOException e) {
e.printStackTrace();
@@ -321,17 +557,16 @@
String suffix = toOpen.substring(
toOpen.lastIndexOf('.') + 1);
TokenMarker syntax = suffix2syntax.get(suffix);
- jedit.setTokenMarker(syntax);
+ jedit.getBuffer().setTokenMarker(syntax);
}
-
public String getTitleAttendance() {
return titleAttendance;
}
public void setTitleAppendance(String titleAttendance) {
- jf.setTitle(jf.getTitle().substring(0,jf.getTitle().lastIndexOf(getTitleAttendance()))+titleAttendance);
+ jf.setTitle(jf.getTitle().substring(0, jf.getTitle().lastIndexOf(getTitleAttendance())) + titleAttendance);
this.titleAttendance = titleAttendance;
}
@@ -341,58 +576,57 @@
* records the first modification, to prevent unsaved edits
* TODO upon Save actions, reset {@link #edited} to false
*/
- class DocumentListener extends WindowAdapter
- implements javax.swing.event.DocumentListener
- , WindowListener
-// , WindowStateListener
- {
- @Override
- /** PENDING these 3 methods are apparently not called;
- * beginCompoundEdit does the job
- */
- public void removeUpdate(DocumentEvent e) {
- edited = true;
- }
+// class DocumentListener extends WindowAdapter
+// implements javax.swing.event.DocumentListener
+// , WindowListener
+//// , WindowStateListener
+// {
+// @Override
+// /** PENDING these 3 methods are apparently not called;
+// * beginCompoundEdit does the job
+// */
+// public void removeUpdate(DocumentEvent e) {
+// edited = true;
+// }
+//
+// @Override
+// public void insertUpdate(DocumentEvent e) {
+// edited = true;
+// }
+//
+// @Override
+// public void changedUpdate(DocumentEvent e) {
+// edited = true;
+// }
+//
+// @Override
+// public void windowClosing(WindowEvent e) {
+// if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+// if (edited) {
+// System.err.println("The document \""
+// + n3.getFileName()
+// + "\" has been edited, you must save it first.");
+// // TODO it should not close, but it does !!!
+// } else {
+// ((Window) e.getSource()).dispose();
+// }
+// }
+// }
+// }
- @Override
- public void insertUpdate(DocumentEvent e) {
- edited = true;
- }
-
- @Override
- public void changedUpdate(DocumentEvent e) {
- edited = true;
- }
-
- @Override
- public void windowClosing(WindowEvent e) {
- if (e.getID() == WindowEvent.WINDOW_CLOSING) {
- if (edited) {
- System.err.println("The document \""
- + n3.getFileName()
- + "\" has been edited, you must save it first.");
- // TODO it should not close, but it does !!!
- } else {
- ((Window) e.getSource()).dispose();
- }
- }
- }
- }
-
- class N3SyntaxDocument extends SyntaxDocument {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void beginCompoundEdit() {
- if (!edited) {
- if (n3 != null) {
- System.out.println("First edit " + n3.showShortName());
- }
- edited = true;
- }
- }
- }
-
+// class N3SyntaxDocument extends SyntaxDocument {
+// private static final long serialVersionUID = 1L;
+//
+// @Override
+// public void beginCompoundEdit() {
+// if (!edited) {
+// if (n3 != null) {
+// System.out.println("First edit " + n3.showShortName());
+// }
+// edited = true;
+// }
+// }
+// }
public N3Source get3NSource() {
return n3;
}
@@ -416,15 +650,15 @@
}
public void insertStringAtPaneEnd(String message) {
- int offs = jedit.getDocument().getEndPosition().getOffset();
- try {
- jedit.getDocument().insertString(offs, message, null);
- jedit.setCaretPosition(
- jedit.getDocument().getEndPosition().getOffset() - 1);
- } catch (BadLocationException e) {
- // Auto-generated catch block
- e.printStackTrace();
- }
-
- }
+ int offs = jedit.getBuffer().getLength();
+// try {
+ jedit.getBuffer().insert(offs, message);
+ jedit.setCaretPosition(
+ jedit.getBuffer().getLength() - 1);
+// } catch (BadLocationException e) {
+// // Auto-generated catch block
+// e.printStackTrace();
+// }
+
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-18 10:13:49
|
Revision: 1330
http://eulergui.svn.sourceforge.net/eulergui/?rev=1330&view=rev
Author: jmvanel
Date: 2010-03-18 10:13:42 +0000 (Thu, 18 Mar 2010)
Log Message:
-----------
add examples to show the use of log:includes and @keywords (from N3 specification)
Added Paths:
-----------
trunk/eulergui/examples/log_includes.n3
trunk/eulergui/examples/log_includes2.n3
Added: trunk/eulergui/examples/log_includes.n3
===================================================================
--- trunk/eulergui/examples/log_includes.n3 (rev 0)
+++ trunk/eulergui/examples/log_includes.n3 2010-03-18 10:13:42 UTC (rev 1330)
@@ -0,0 +1,18 @@
+@prefix log: <http://www.w3.org/2000/10/swap/log#>.
+@prefix : <http://jos.org#>.
+@keywords.
+
+# this example shows the use of @keywords to avoid writing : before every term.
+
+Bob lives Boston.
+Bob wrote { Boston weather sunny }.
+Alice lives Adelaide.
+Alice wrote { Boston weather cold }.
+
+@forAll x, y, z, w.
+{ x wrote y.
+ y log:includes {z weather w}.
+ x lives z
+} log:implies {
+ z weather w
+} .
Added: trunk/eulergui/examples/log_includes2.n3
===================================================================
--- trunk/eulergui/examples/log_includes2.n3 (rev 0)
+++ trunk/eulergui/examples/log_includes2.n3 2010-03-18 10:13:42 UTC (rev 1330)
@@ -0,0 +1,23 @@
+@prefix log: <http://www.w3.org/2000/10/swap/log#>.
+@prefix : <http://jos.org#>.
+@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#> .
+
+# cf http://www.w3.org/DesignIssues/N3Logic
+# This means: "We believe statements about the weather at a place only from people who live there."
+# Works only with Euler.
+
+:Bob :lives :Boston.
+:Bob :wrote {:Boston :weather :sunny}.
+
+:Alice :lives :Adelaide.
+:Alice :wrote {:Boston :weather :cold}.
+
+
+{ ?x :wrote ?y.
+ ?y log:includes {?z :weather ?w}.
+ ?x :lives ?z
+} log:implies {
+ ?z :weather ?w
+} .
+
+# expected ==> :Boston :weather :sunny .
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 13:26:26
|
Revision: 1329
http://eulergui.svn.sourceforge.net/eulergui/?rev=1329&view=rev
Author: iamlolive
Date: 2010-03-17 13:26:19 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
editors now always show on top.
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
trunk/eulergui/src/main/java/n3_project/EditorManagement.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-17 11:48:24 UTC (rev 1328)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-17 13:26:19 UTC (rev 1329)
@@ -180,6 +180,7 @@
public void showError(String errorMessage, int lineNumber, int columnNumber) {
setToolTipText(errorMessage);
setCaretPosition(lineNumber, columnNumber);
+ setOnTop();
}
public void removeTooltipOnNextEdit() {
Modified: trunk/eulergui/src/main/java/n3_project/EditorManagement.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/EditorManagement.java 2010-03-17 11:48:24 UTC (rev 1328)
+++ trunk/eulergui/src/main/java/n3_project/EditorManagement.java 2010-03-17 13:26:19 UTC (rev 1329)
@@ -176,8 +176,9 @@
}
else {
editor = n3SourceToEditor.get(n3);
- editor.setOnTop();
+
}
+ editor.setOnTop();
return editor;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 11:48:35
|
Revision: 1328
http://eulergui.svn.sourceforge.net/eulergui/?rev=1328&view=rev
Author: iamlolive
Date: 2010-03-17 11:48:24 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
cursor offset has moved from TextEditor to ResultManagement
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
trunk/eulergui/src/main/java/n3_project/ResultManagement.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-17 11:21:41 UTC (rev 1327)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-17 11:48:24 UTC (rev 1328)
@@ -136,11 +136,7 @@
}
public void setCaretPosition(int line, int col) {
- if (line >= 1)
- line--;
- if (col >= 1)
- col--;
-
+
int position = jedit.getLineStartOffset(line) + col;
//TODO the parser erroneously places the end of line errors. They are placed at the beginning of the next line. We correct that behaviour (on purpose?)
if (col == 0)
Modified: trunk/eulergui/src/main/java/n3_project/ResultManagement.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/ResultManagement.java 2010-03-17 11:21:41 UTC (rev 1327)
+++ trunk/eulergui/src/main/java/n3_project/ResultManagement.java 2010-03-17 11:48:24 UTC (rev 1328)
@@ -212,7 +212,12 @@
String errorMessage = result.getErrorMessage();
int lineNumber = result.getParseResult().getLineNumber();
int columnNumber = result.getParseResult().getColumnNumber();
+ if (lineNumber >= 1)
+ lineNumber--;
+ if (columnNumber >= 1)
+ columnNumber--;
+
TextEditor editor = projectGUI.getEditorManagement().openJavaEditor(source, "(Error at line "+lineNumber+")", true);
editor.showError(errorMessage, lineNumber, columnNumber);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 11:21:52
|
Revision: 1327
http://eulergui.svn.sourceforge.net/eulergui/?rev=1327&view=rev
Author: iamlolive
Date: 2010-03-17 11:21:41 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
PARSE button now opens the editor, in error mode, when parsing fails.
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/view/ButtonsForN3Source.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/view/ButtonsForN3Source.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/ButtonsForN3Source.java 2010-03-17 11:19:50 UTC (rev 1326)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/ButtonsForN3Source.java 2010-03-17 11:21:41 UTC (rev 1327)
@@ -14,6 +14,7 @@
import eulergui.project.Project;
import n3_project.ProjectGUI;
import n3_project.SourceFilesView;
+import n3_project.exceptions.parser.ParsingException;
import n3_project.helpers.N3toGraphviz;
import net.sf.parser4j.parser.service.IParserListener;
import net.sf.parser4j.parser.service.ParserException;
@@ -172,8 +173,9 @@
try {
projectGUI.getResultManagement().insertStringAtPaneEnd(
projectGUI.getResultManagement().getProjectGUI(),
- "PARSE ERROR (see arror panel)."
- );
+ "PARSE ERROR (see error panel).");
+ projectGUI.getResultManagement().displayOriginalSourceWithErrors(n3Source, n3ParseResult);
+
sourceFilesView.getProject().setErrors(n3ParseResult.getErrorMessage());
} catch (BadLocationException e2) {
e2.printStackTrace();
@@ -193,6 +195,12 @@
} catch (ParserException parserException) {
parserException.printStackTrace();
try {
+ if(parserException instanceof ParsingException){
+ ParsingException parsingException = ((ParsingException) parserException);
+
+ projectGUI.getResultManagement().displayOriginalSourceWithErrors(parsingException.getSource(), parsingException.getResult());
+ }
+ else
projectGUI.getResultManagement().insertStringAtPaneEnd(
projectGUI.getResultManagement().getProjectGUI(),
parserException.toString() );
@@ -202,7 +210,7 @@
} catch (BadLocationException ee) {
ee.printStackTrace();
}
- projectGUI.getResultManagement().displayStandardError();
+ //projectGUI.getResultManagement().displayStandardError();
}
});
parserButton.setText("PARSE");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 11:19:56
|
Revision: 1326
http://eulergui.svn.sourceforge.net/eulergui/?rev=1326&view=rev
Author: iamlolive
Date: 2010-03-17 11:19:50 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
displayError now add some details in the Editor's window title.
Modified Paths:
--------------
trunk/eulergui/src/main/java/n3_project/ResultManagement.java
Modified: trunk/eulergui/src/main/java/n3_project/ResultManagement.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/ResultManagement.java 2010-03-17 11:17:43 UTC (rev 1325)
+++ trunk/eulergui/src/main/java/n3_project/ResultManagement.java 2010-03-17 11:19:50 UTC (rev 1326)
@@ -209,11 +209,11 @@
}
public void displayOriginalSourceWithErrors(eulergui.project.N3Source source, N3ParseResult result) {
- TextEditor editor = projectGUI.getEditorManagement().openJavaEditor(source);
-
String errorMessage = result.getErrorMessage();
int lineNumber = result.getParseResult().getLineNumber();
int columnNumber = result.getParseResult().getColumnNumber();
+
+ TextEditor editor = projectGUI.getEditorManagement().openJavaEditor(source, "(Error at line "+lineNumber+")", true);
editor.showError(errorMessage, lineNumber, columnNumber);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 11:17:49
|
Revision: 1325
http://eulergui.svn.sourceforge.net/eulergui/?rev=1325&view=rev
Author: iamlolive
Date: 2010-03-17 11:17:43 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
correct management of title appendance
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
trunk/eulergui/src/main/java/n3_project/EditorManagement.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-17 11:03:33 UTC (rev 1324)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-17 11:17:43 UTC (rev 1325)
@@ -186,7 +186,7 @@
setCaretPosition(lineNumber, columnNumber);
}
- private void removeTooltipOnNextEdit() {
+ public void removeTooltipOnNextEdit() {
final DocumentListener tooltipRemover = new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
@@ -217,6 +217,37 @@
jedit.getDocument().addDocumentListener(tooltipRemover);
}
+ public void removeAppendanceOnNextEdit() {
+ final DocumentListener attendanceRemover = new DocumentListener() {
+ @Override
+ public void removeUpdate(DocumentEvent e) {
+ //TODO how to remove our custom Highlight instead of this quick hack ?
+ setTitleAppendance("");
+ jedit.getDocument().removeDocumentListener(this);
+ }
+
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ //TODO how to remove our custom Highlight instead of this quick hack ?
+ setTitleAppendance("");
+ jedit.getDocument().removeDocumentListener(this);
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {
+ //TODO how to remove our custom Highlight instead of this quick hack ?
+ setTitleAppendance("");
+ jedit.getDocument().removeDocumentListener(this);
+ }
+
+ @Override
+ public void windowClosing(WindowEvent e) {
+ //super.windowClosing(e); //To change body of overridden methods use File | Settings | File Templates.
+ }
+ };
+ jedit.getDocument().addDocumentListener(attendanceRemover);
+ }
+
/**
* display Editor in a new Window, with save As in File menu
*/
@@ -296,6 +327,19 @@
jedit.setTokenMarker(syntax);
}
+
+
+ public String getTitleAttendance() {
+ return titleAttendance;
+ }
+
+ public void setTitleAppendance(String titleAttendance) {
+ jf.setTitle(jf.getTitle().substring(0,jf.getTitle().lastIndexOf(getTitleAttendance()))+titleAttendance);
+ this.titleAttendance = titleAttendance;
+ }
+
+ public String titleAttendance = "";
+
/**
* records the first modification, to prevent unsaved edits
* TODO upon Save actions, reset {@link #edited} to false
Modified: trunk/eulergui/src/main/java/n3_project/EditorManagement.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/EditorManagement.java 2010-03-17 11:03:33 UTC (rev 1324)
+++ trunk/eulergui/src/main/java/n3_project/EditorManagement.java 2010-03-17 11:17:43 UTC (rev 1325)
@@ -120,11 +120,15 @@
public Map<N3Source,TextEditor> n3SourceToEditor = new HashMap<N3Source, TextEditor>();
- public TextEditor openJavaEditor( final N3Source n3 ) {
- return openJavaEditor(n3,"");
+ public TextEditor openJavaEditor( final N3Source n3, String titleAppendance , boolean removeAppendanceOnFirstEdit ) {
+ TextEditor editor = openJavaEditor(n3);
+ editor.setTitleAppendance(titleAppendance);
+ if(removeAppendanceOnFirstEdit)
+ editor.removeAppendanceOnNextEdit();
+ return editor;
}
- public TextEditor openJavaEditor( final N3Source n3, String titleAppendance ) {
+ public TextEditor openJavaEditor( final N3Source n3 ) {
final TextEditor editor;
if(!n3SourceToEditor.containsKey(n3)){
editor = new TextEditor();
@@ -174,7 +178,7 @@
editor = n3SourceToEditor.get(n3);
editor.setOnTop();
}
- editor.jf.setTitle(n3.showShortName()+ " " + titleAppendance);
+
return editor;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 11:03:40
|
Revision: 1324
http://eulergui.svn.sourceforge.net/eulergui/?rev=1324&view=rev
Author: iamlolive
Date: 2010-03-17 11:03:33 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
Titles of editors can now have an appendable text, after the edited file name
Modified Paths:
--------------
trunk/eulergui/src/main/java/n3_project/EditorManagement.java
Modified: trunk/eulergui/src/main/java/n3_project/EditorManagement.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/EditorManagement.java 2010-03-17 09:31:11 UTC (rev 1323)
+++ trunk/eulergui/src/main/java/n3_project/EditorManagement.java 2010-03-17 11:03:33 UTC (rev 1324)
@@ -120,7 +120,11 @@
public Map<N3Source,TextEditor> n3SourceToEditor = new HashMap<N3Source, TextEditor>();
- public TextEditor openJavaEditor( final N3Source n3 ) {
+ public TextEditor openJavaEditor( final N3Source n3 ) {
+ return openJavaEditor(n3,"");
+ }
+
+ public TextEditor openJavaEditor( final N3Source n3, String titleAppendance ) {
final TextEditor editor;
if(!n3SourceToEditor.containsKey(n3)){
editor = new TextEditor();
@@ -170,6 +174,7 @@
editor = n3SourceToEditor.get(n3);
editor.setOnTop();
}
+ editor.jf.setTitle(n3.showShortName()+ " " + titleAppendance);
return editor;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-17 09:31:17
|
Revision: 1323
http://eulergui.svn.sourceforge.net/eulergui/?rev=1323&view=rev
Author: jmvanel
Date: 2010-03-17 09:31:11 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
add test/error-parse-comment-at-end.n3
Added Paths:
-----------
trunk/eulergui/test/error-parse-comment-at-end.n3
Added: trunk/eulergui/test/error-parse-comment-at-end.n3
===================================================================
--- trunk/eulergui/test/error-parse-comment-at-end.n3 (rev 0)
+++ trunk/eulergui/test/error-parse-comment-at-end.n3 2010-03-17 09:31:11 UTC (rev 1323)
@@ -0,0 +1,2 @@
+:a :b :c.
+# bla
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-17 09:00:57
|
Revision: 1322
http://eulergui.svn.sourceforge.net/eulergui/?rev=1322&view=rev
Author: iamlolive
Date: 2010-03-17 09:00:47 +0000 (Wed, 17 Mar 2010)
Log Message:
-----------
a (slightly better) display of error messages.
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-16 10:20:31 UTC (rev 1321)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-17 09:00:47 UTC (rev 1322)
@@ -88,12 +88,21 @@
}
- stringBuilder.append("\nExpecting :\n");
+ stringBuilder.append("\nExpecting one of these :\n");
if (expectedTerminal==true) {
for (TerminalCharRange terminalCharRange : parseResult.getExpectedTerminal()) {
stringBuilder.append('\t');
- stringBuilder.append("-> "+(terminalCharRange.getFirstTerminalValue()==terminalCharRange.getLastTerminalValue()?(char)terminalCharRange.getFirstTerminalValue():terminalCharRange.toString()));
+ int firstTerminalValue = terminalCharRange.getFirstTerminalValue();
+ int lastTerminalValue = terminalCharRange.getLastTerminalValue();
+ if(firstTerminalValue == lastTerminalValue){
+ if (firstTerminalValue < ' ' || firstTerminalValue >= 0x7f) {
+ stringBuilder.append("-> Ox"+Integer.toString(firstTerminalValue, 16));
+ } else {
+ stringBuilder.append("-> "+(char) firstTerminalValue);
+ }
+ }else
+ stringBuilder.append("-> "+(terminalCharRange.toString()));
stringBuilder.append('\n');
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-16 10:20:38
|
Revision: 1321
http://eulergui.svn.sourceforge.net/eulergui/?rev=1321&view=rev
Author: jmvanel
Date: 2010-03-16 10:20:31 +0000 (Tue, 16 Mar 2010)
Log Message:
-----------
GUI enhancement: re-established (the regression is gone)
glue together the components between the button bar and the bottom text panel, so that the bottom text panel can grow in size.
Modified Paths:
--------------
trunk/eulergui/src/main/java/n3_project/SourceFilesView.java
Modified: trunk/eulergui/src/main/java/n3_project/SourceFilesView.java
===================================================================
--- trunk/eulergui/src/main/java/n3_project/SourceFilesView.java 2010-03-15 18:37:08 UTC (rev 1320)
+++ trunk/eulergui/src/main/java/n3_project/SourceFilesView.java 2010-03-16 10:20:31 UTC (rev 1321)
@@ -1,6 +1,7 @@
package n3_project;
import java.awt.Color;
+import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Collection;
@@ -48,33 +49,36 @@
getButtonsPanel().removeAll();
getButtonsPanel().setLayout(new BoxLayout(getButtonsPanel(), BoxLayout.Y_AXIS));
-
+ int buttonCount = 0;
+ Dimension buttonSize = new Dimension();
// copy sources to avoid ConcurrentModificationException
Collection<N3Source> sources_
= new ArrayList<N3Source>( getProject().getSources().values() );
for (N3Source n3Source : sources_) {
- addButtonForFile( n3Source );
+ buttonSize = addButtonForFile( n3Source ).getSize();
+ buttonCount++;
}
N3Source n3 = getProject().getN3Query();
if (n3 != null) {
- doAddButtonForFile( n3, true );
+ doAddButtonForFile( n3, true ); // TODO buttonSize
+ buttonCount++;
}
fireEventsToUpdateN3SourceComponents();
// glue together the buttons for N3 sources
-// getButtonsPanel().setMaximumSize( getButtonsPanel().getPreferredSize() );
-// TODO: commented out (was added in revision 1301), because of regression
- // (see revision 1310 )
-
- System.out.println("SourceFilesView.makeButtonsPanel(): " +
- "getButtonsPanel().getPreferredSize(): "
- + getButtonsPanel().getPreferredSize() );
-
+ getButtonsPanel().setMaximumSize( new Dimension(
+ Short.MAX_VALUE,
+ buttonCount * buttonSize.height ) );
+
getCenterPanel().validate();
+// System.out.println("AFTER getCenterPanel().validate();" );
+// System.out.println("SourceFilesView.makeButtonsPanel(): "
+// + " getButtonsPanel().getSize(): "
+// + getButtonsPanel().getSize() );
getCenterPanel().invalidate();
getProjectGUI().updateWindowTitle();
@@ -104,7 +108,7 @@
/** add a row of Buttons for any N3 source, non-query
* TODO add argument isQuery and unify with other method addButtonForFile */
- void addButtonForFile( N3Source n3 ) {
+ JPanel addButtonForFile( N3Source n3 ) {
String otherFile = "";
if( n3 instanceof N3SourceFromOtherFormat ) {
@@ -120,6 +124,7 @@
}
visualizeErrorOnN3Source(n3, panel);
+ return panel;
}
static void visualizeErrorOnN3Source(N3Source n3, JPanel panel) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-15 18:37:15
|
Revision: 1320
http://eulergui.svn.sourceforge.net/eulergui/?rev=1320&view=rev
Author: iamlolive
Date: 2010-03-15 18:37:08 +0000 (Mon, 15 Mar 2010)
Log Message:
-----------
our own version of the parsing error message.
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java
Modified: trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-15 18:36:23 UTC (rev 1319)
+++ trunk/eulergui/src/main/java/eulergui/parser/n3/impl/parser4j/entity/N3ParseResult.java 2010-03-15 18:37:08 UTC (rev 1320)
@@ -2,6 +2,9 @@
import net.sf.parser4j.parser.entity.ParseResult;
import eulergui.n3model.IN3Model;
+import net.sf.parser4j.parser.entity.data.TerminalCharRange;
+import net.sf.parser4j.parser.entity.parsenode.status.IParseNodeInErrorStatus;
+import net.sf.parser4j.parser.service.ParsingToStringUtil;
/**
*
@@ -14,7 +17,8 @@
private final IN3Model model;
- public N3ParseResult(final ParseResult parseResult, final IN3Model model) {
+
+ public N3ParseResult(final ParseResult parseResult, final IN3Model model) {
this.parseResult = parseResult;
this.model = model;
}
@@ -38,6 +42,111 @@
}
public String getErrorMessage() {
- return parseResult.toString();
+ boolean lastCharacterRead = true;
+ boolean expectedTerminal = true;
+ boolean expectedNonTerminal = true;
+ boolean reduceerror = true;
+ boolean syntaxStacks = false;
+boolean lexicalStacks = false;
+
+
+ //return parseResult.toString();
+ final StringBuilder stringBuilder = new StringBuilder();
+// if (isInError()) {
+// stringBuilder.append("has parsing error\n");
+// } else {
+// stringBuilder.append("does not have parsing error\n");
+// }
+// if (parseResult.isPreserveParseNode()) {
+// stringBuilder.append("parse node preserved\n");
+// } else {
+// stringBuilder.append("parse node not preserved\n");
+// }
+ if (parseResult.isParseError()) {
+// stringBuilder.append("parse failed: file ");
+// stringBuilder.append(parseResult.getFileName());
+// stringBuilder.append(", line ");
+// stringBuilder.append(parseResult.getLineNumber());
+// stringBuilder.append(" column ");
+// stringBuilder.append(parseResult.getColumnNumber());
+
+ if (lastCharacterRead) {
+ stringBuilder.append("Last character read : ");
+ if (parseResult.getLastTerminalValueRead() == -1) {
+ stringBuilder.append("EOF");
+ } else if (parseResult.getLastTerminalValueRead() < ' '
+ || parseResult.getLastTerminalValueRead() >= 0x7f) {
+ stringBuilder.append(String.format("0X%2X",
+ new Object[] { parseResult.getLastTerminalValueRead() }));
+
+ } else {
+ stringBuilder.append('"');
+ stringBuilder.append((char) parseResult.getLastTerminalValueRead());
+ stringBuilder.append('"');
+ }
+
+ }
+
+
+ stringBuilder.append("\nExpecting :\n");
+ if (expectedTerminal==true) {
+
+ for (TerminalCharRange terminalCharRange : parseResult.getExpectedTerminal()) {
+ stringBuilder.append('\t');
+ stringBuilder.append("-> "+(terminalCharRange.getFirstTerminalValue()==terminalCharRange.getLastTerminalValue()?(char)terminalCharRange.getFirstTerminalValue():terminalCharRange.toString()));
+ stringBuilder.append('\n');
+ }
+ }
+
+ if (expectedNonTerminal==true) {
+ //stringBuilder.append("expected non terminal:\n");
+ for (String nonTerminal : parseResult.getExpectedNonTerminal()) {
+ stringBuilder.append('\t');
+ stringBuilder.append("-> "+nonTerminal);
+ stringBuilder.append('\n');
+ }
+ }
+ }
+ else {
+ stringBuilder.append("parse succeed\n");
+ }
+
+ if (reduceerror == true && parseResult.getErrorStatusList() != null && !parseResult.getErrorStatusList().isEmpty()) {
+ stringBuilder.append("reduce error: ");
+ for (IParseNodeInErrorStatus status : parseResult.getErrorStatusList()) {
+ stringBuilder.append(status.toString());
+ stringBuilder.append('\n');
+ }
+ }
+
+
+
+ if (parseResult.getParseStacks() != null) {
+ if (syntaxStacks==true) {
+ stringBuilder.append("syntax parse stacks\n");
+ stringBuilder.append(parseResult.getParsingToStringUtil().parseStacksToString(
+ parseResult.getParseStacks(), parseResult.getTokenRecognition(), parseResult.getStringTokenRecognition(),
+ false/*
+ * true/ addParseTree
+ */));
+ }
+ }
+
+ if (parseResult.getTokenParseStacks() != null) {
+
+ if (lexicalStacks == true) {
+ stringBuilder.append("lexical parse stacks\n");
+ stringBuilder.append(parseResult.getParsingToStringUtil().parseStacksToString(
+ parseResult.getTokenParseStacks(), parseResult.getTokenRecognition(), parseResult.getStringTokenRecognition(),
+ false/*
+ * true/ addParseTree
+ */));
+ }
+ }
+
+ return stringBuilder.toString();
+ //return parseResult.toString();
+
+
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <iam...@us...> - 2010-03-15 18:36:30
|
Revision: 1319
http://eulergui.svn.sourceforge.net/eulergui/?rev=1319&view=rev
Author: iamlolive
Date: 2010-03-15 18:36:23 +0000 (Mon, 15 Mar 2010)
Log Message:
-----------
our own version of ParseResult (from parser4j). it will work alongside the sealed=false version of parser4j.jar, that we have just put on our maven repository.
Added Paths:
-----------
trunk/eulergui/src/main/java/net/sf/
trunk/eulergui/src/main/java/net/sf/parser4j/
trunk/eulergui/src/main/java/net/sf/parser4j/parser/
trunk/eulergui/src/main/java/net/sf/parser4j/parser/entity/
trunk/eulergui/src/main/java/net/sf/parser4j/parser/entity/ParseResult.java
Added: trunk/eulergui/src/main/java/net/sf/parser4j/parser/entity/ParseResult.java
===================================================================
--- trunk/eulergui/src/main/java/net/sf/parser4j/parser/entity/ParseResult.java (rev 0)
+++ trunk/eulergui/src/main/java/net/sf/parser4j/parser/entity/ParseResult.java 2010-03-15 18:36:23 UTC (rev 1319)
@@ -0,0 +1,412 @@
+/*
+ * Copyright 2008 Luc Peuvrier
+ *
+ * This file is part of parser4j.
+ *
+ * parser4j 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * parser4j 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with parser4j. If not, see <http://www.gnu.org/licenses/>.
+ */
+package net.sf.parser4j.parser.entity;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import net.sf.parser4j.parser.entity.data.NonTerminal;
+import net.sf.parser4j.parser.entity.data.TerminalCharRange;
+import net.sf.parser4j.parser.entity.parsenode.IParseNode;
+import net.sf.parser4j.parser.entity.parsenode.data.IParseNodeData;
+import net.sf.parser4j.parser.entity.parsenode.status.IParseNodeInErrorStatus;
+import net.sf.parser4j.parser.entity.parsestate.ParseStack;
+import net.sf.parser4j.parser.service.ParserException;
+import net.sf.parser4j.parser.service.ParsingToStringUtil;
+
+/**
+ * parse result
+ *
+ * @author luc peuvrier
+ *
+ */
+public class ParseResult {
+
+ private final String grammarFileUrl; // NOPMD
+
+ /** true if syntax parsing error */
+ private boolean parseError;
+
+ /** file name where is syntax error */
+ private String fileName; // NOPMD
+
+ /** line number in input text file for syntax error */
+ private int lineNumber = -1;// NOPMD
+
+ /** column number in input text file for syntax error */
+ private int columnNumber = -1;// NOPMD
+
+ /** last terminal value read */
+ private int lastTerminalValueRead = -1;// NOPMD
+
+ /** expected terminal not found in input text file for syntax error */
+ private final Set<TerminalCharRange> expectedTerminal = // NOPMD
+ /**/new TreeSet<TerminalCharRange>();
+
+ /** expected non terminal not found in input text file for syntax error */
+ private final Set<String> expectedNonTerminal = // NOPMD
+ /**/new TreeSet<String>();
+
+ /** the error status for error cause of reduce error */
+ private List<IParseNodeInErrorStatus> errorStatusList;// NOPMD
+
+ /** line number in input text file for reduce error */
+ private int reduceErrorLineNumber;// NOPMD
+
+ /** column number in input text file for reduce error */
+ private int reduceErrorColumnNumber;// NOPMD
+
+ /** the resulting parse tree root node if no syntax error */
+ private IParseNode resultParseNode;
+
+ private ParseStack[] parseStacks;
+
+ private ParseStack[] tokenParseStacks;// NOPMD
+
+ private boolean[] tokenRecognition;// NOPMD
+
+ private boolean[] stringTokenRecognition;// NOPMD
+
+ private final Map<Integer, NonTerminal> nonTerminalByIdentifierMap;// NOPMD
+
+ private boolean preserveParseNode;
+
+ private final ParsingToStringUtil parsingToStringUtil;// NOPMD
+
+ /**
+ * set error state at creation
+ *
+ * @param grammarFileUrl
+ * @param nonTerminalByIdentifierMap
+ */
+ public ParseResult(final String grammarFileUrl,
+ final Map<Integer, NonTerminal> nonTerminalByIdentifierMap) {
+ this.grammarFileUrl = grammarFileUrl;
+ this.nonTerminalByIdentifierMap = nonTerminalByIdentifierMap;
+ parsingToStringUtil = new ParsingToStringUtil(
+ nonTerminalByIdentifierMap);
+ }
+
+ public String getGrammarFileUrl() {
+ return grammarFileUrl;
+ }
+
+ /**
+ * set the resulting parse tree root node
+ *
+ * @param resultParseNode
+ */
+ public void setResultParseNode(final IParseNode resultParseNode) {
+ this.resultParseNode = resultParseNode;
+ }
+
+ /**
+ * @param lastTerminalValueRead
+ * the last terminal value read to set
+ */
+ public void setlastTerminalValueRead(final int lastTerminalValueRead) {
+ this.lastTerminalValueRead = lastTerminalValueRead;
+ }
+
+ /**
+ * set line number and column number in input text file for syntax error
+ *
+ * @param fileName
+ * @param lineNumber
+ * line in file where is syntax error
+ * @param columnNumber
+ * column in file where is syntax error
+ * @param fileName
+ * file name where is syntax error
+ */
+ public void setInFileInformation(final String fileName,
+ final int lineNumber, final int columnNumber) {
+ this.fileName = fileName;
+ this.lineNumber = lineNumber;
+ this.columnNumber = columnNumber;
+ }
+
+ /**
+ * set syntax error state
+ *
+ * @param parseError
+ * true if syntax parsing error
+ */
+ public void setParseError(final boolean parseError) {
+ this.parseError = parseError;
+ }
+
+ /**
+ * set the reduce error informations
+ *
+ * @param errorStatusList
+ * the error status for error cause of reduce error
+ */
+ public void setReduceErrorInfo(
+ final List<IParseNodeInErrorStatus> errorStatusList) {
+ this.errorStatusList = errorStatusList;
+ }
+
+ /**
+ *
+ * @return true if error during parsing
+ */
+ public boolean isInError() {
+ return parseError || isReduceError();
+ }
+
+ /**
+ *
+ * @return the resulting parse tree root node if no syntax error
+ */
+ public IParseNode getResultParseNode() {
+ return resultParseNode;
+ }
+
+ public IParseNodeData getUniqData() throws ParserException {
+ if (!resultParseNode.hasDataComputed()) {
+ throw new ParserException("node data not computed");
+ }
+ return resultParseNode.getUniqData();
+ }
+
+ public IParseNodeData[] getDataByAlternative() throws ParserException {
+ if (!resultParseNode.hasDataComputed()) {
+ throw new ParserException("node data not computed");
+ }
+ return resultParseNode.getDataByAlternative();
+ }
+
+ /**
+ *
+ * @return true if syntax parsing error
+ */
+ public boolean isParseError() {
+ return parseError;
+ }
+
+ /**
+ *
+ * @return true if reduce error while parsing
+ */
+ public boolean isReduceError() {
+ return errorStatusList != null && !errorStatusList.isEmpty();
+ }
+
+ /**
+ *
+ * @return file name where is syntax error
+ */
+ public String getFileName() {
+ return fileName;
+ }
+
+ /**
+ *
+ * @return column number in input text file for syntax error
+ */
+ public int getColumnNumber() {
+ return columnNumber;
+ }
+
+ /**
+ *
+ * @return line number in input text file for syntax error
+ */
+ public int getLineNumber() {
+ return lineNumber;
+ }
+
+ /**
+ *
+ * @return expected non terminal not found in input text file for syntax
+ * error
+ */
+ public Set<String> getExpectedNonTerminal() {
+ return expectedNonTerminal;
+ }
+
+ /**
+ *
+ * @return expected terminal not found in input text file for syntax error
+ */
+ public Set<TerminalCharRange> getExpectedTerminal() {
+ return expectedTerminal;
+ }
+
+ /**
+ * @return the error status list
+ */
+ public List<IParseNodeInErrorStatus> getErrorStatusList() {
+ return errorStatusList;
+ }
+
+ /**
+ *
+ * @return line number in input text file for reduce error
+ */
+ public int getReduceErrorLineNumber() {
+ return reduceErrorLineNumber;
+ }
+
+ /**
+ *
+ * @return column number in input text file for reduce error
+ */
+ public int getReduceErrorColumnNumber() {
+ return reduceErrorColumnNumber;
+ }
+
+ @SuppressWarnings("PMD")
+ public void setParseStacks(final ParseStack[] parseStacks,
+ final ParseStack[] tokenParseStacks,
+ final boolean[] tokenRecognition,
+ final boolean[] stringTokenRecognition) {
+ this.parseStacks = parseStacks;
+ this.tokenParseStacks = tokenParseStacks;
+ this.tokenRecognition = tokenRecognition;
+ this.stringTokenRecognition = stringTokenRecognition;
+ }
+
+ /**
+ * @return the parseStacks
+ */
+ public ParseStack[] getParseStacks() {
+ return parseStacks;// NOPMD
+ }
+
+ /**
+ * @return the tokenParseStacks
+ */
+ public ParseStack[] getTokenParseStacks() {
+ return tokenParseStacks;// NOPMD
+ }
+
+ /**
+ * @return the tokenRecognition
+ */
+ public boolean[] getTokenRecognition() {
+ return tokenRecognition;// NOPMD
+ }
+
+ public boolean[] getStringTokenRecognition() {
+ return stringTokenRecognition;// NOPMD
+ }
+
+ public Map<Integer, NonTerminal> getNonTerminalByIdentifierMap() {
+ return nonTerminalByIdentifierMap;
+ }
+
+ public void setPreserveParseNode(final boolean preserveParseNode) {
+ this.preserveParseNode = preserveParseNode;
+ }
+
+ public boolean isPreserveParseNode() {
+ return preserveParseNode;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder stringBuilder = new StringBuilder();
+ if (isInError()) {
+ stringBuilder.append("has parsing error\n");
+ } else {
+ stringBuilder.append("does not have parsing error\n");
+ }
+ if (preserveParseNode) {
+ stringBuilder.append("parse node preserved\n");
+ } else {
+ stringBuilder.append("parse node not preserved\n");
+ }
+ if (parseError) {
+ stringBuilder.append("parse failed: file ");
+ stringBuilder.append(fileName);
+ stringBuilder.append(", line ");
+ stringBuilder.append(lineNumber);
+ stringBuilder.append(" column ");
+ stringBuilder.append(columnNumber);
+ stringBuilder.append(", last character read ");
+ if (lastTerminalValueRead == -1) {
+ stringBuilder.append("EOF");
+ } else if (lastTerminalValueRead < ' '
+ || lastTerminalValueRead >= 0x7f) {
+ stringBuilder.append(String.format("0X%2X",
+ new Object[] { lastTerminalValueRead }));
+ } else {
+ stringBuilder.append('"');
+ stringBuilder.append((char) lastTerminalValueRead);
+ stringBuilder.append('"');
+ }
+ stringBuilder.append("\nexpected terminal:\n");
+ for (TerminalCharRange terminalCharRange : expectedTerminal) {
+ stringBuilder.append('\t');
+ stringBuilder.append(terminalCharRange.toString());
+ stringBuilder.append('\n');
+ }
+ stringBuilder.append("expected non terminal:\n");
+ for (String nonTerminal : expectedNonTerminal) {
+ stringBuilder.append('\t');
+ stringBuilder.append(nonTerminal);
+ stringBuilder.append('\n');
+ }
+ } else {
+ stringBuilder.append("parse succeed\n");
+ }
+ if (errorStatusList == null) {
+ stringBuilder.append("no reduce error\n");
+ } else {
+ stringBuilder.append("reduce error: ");
+ for (IParseNodeInErrorStatus status : errorStatusList) {
+ stringBuilder.append(status.toString());
+ stringBuilder.append('\n');
+ }
+ }
+
+ if (parseStacks != null) {
+ stringBuilder.append("syntax parse stacks\n");
+ stringBuilder.append(parsingToStringUtil.parseStacksToString(
+ parseStacks, tokenRecognition, stringTokenRecognition,
+ false/*
+ * true/ addParseTree
+ */));
+ }
+
+ if (tokenParseStacks != null) {
+ stringBuilder.append("lexical parse stacks\n");
+ stringBuilder.append(parsingToStringUtil.parseStacksToString(
+ tokenParseStacks, tokenRecognition, stringTokenRecognition,
+ false/*
+ * true/ addParseTree
+ */));
+ }
+ return stringBuilder.toString();
+ }
+
+
+
+ public int getLastTerminalValueRead() {
+ return lastTerminalValueRead;
+ }
+
+ public ParsingToStringUtil getParsingToStringUtil() {
+ return parsingToStringUtil;
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jm...@us...> - 2010-03-15 18:02:03
|
Revision: 1318
http://eulergui.svn.sourceforge.net/eulergui/?rev=1318&view=rev
Author: jmvanel
Date: 2010-03-15 18:01:56 +0000 (Mon, 15 Mar 2010)
Log Message:
-----------
documentation.html : add on how compile Parser4J
Modified Paths:
--------------
trunk/eulergui/html/documentation.html
Modified: trunk/eulergui/html/documentation.html
===================================================================
--- trunk/eulergui/html/documentation.html 2010-03-15 16:22:22 UTC (rev 1317)
+++ trunk/eulergui/html/documentation.html 2010-03-15 18:01:56 UTC (rev 1318)
@@ -11,7 +11,7 @@
<body>
<p style="text-align:center;font-size: 20pt">Euler GUI Manual</p>
-<p>© Jean-Marc Vanel - $Date: 2010-03-04$ - <a
+<p>© Jean-Marc Vanel - $Date: 2010-03-15$ - <a
href="http://eulergui.sourceforge.net/documentation.html">a view possibly older
in sync. with EulerGUI release </a> - <a
href="http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html">Latest
@@ -23,15 +23,15 @@
<ul>
<li><a href="#Introducti">Introduction</a></li>
<li><a href="#Features">Features</a></li>
- <li><a href="#Installati">Installation</a>
+ <li><a href="#Installati">Installation</a>
<ul>
- <li><a href="#Prerequisi">Prerequisite</a>
+ <li><a href="#Prerequisi">Prerequisite</a>
<ul>
<li><a href="#Additional">Additional steps on Mac</a></li>
</ul>
</li>
<li><a href="#Install1">Install and run EulerGUI</a></li>
- <li><a href="#Install">Install external tools</a>
+ <li><a href="#Install">Install external tools</a>
<ul>
<li><a href="#L702">Facultative tool</a></li>
</ul>
@@ -39,10 +39,10 @@
</ul>
</li>
<li><a href="#L3298">Support & community</a></li>
- <li><a href="#cases">Use cases</a>
+ <li><a href="#cases">Use cases</a>
<ul>
<li><a href="#Main">Main use case</a></li>
- <li><a href="#Inference">Inference engines</a>
+ <li><a href="#Inference">Inference engines</a>
<ul>
<li><a href="#case">CWM use case</a></li>
<li><a href="#Drools">Drools use case</a></li>
@@ -50,16 +50,16 @@
</ul>
</li>
<li><a href="#L3796">Which rule engine to use?</a></li>
- <li><a href="#Data">Data sources</a>
+ <li><a href="#Data">Data sources</a>
<ul>
<li><a href="#Reading">Reading XMI files (UML or eCore)</a></li>
- <li><a href="#Reading2">Reading plain XML files or XML Schema</a>
+ <li><a href="#Reading2">Reading plain XML files or XML Schema</a>
<ul>
<li><a href="#L2297">Redefer</a></li>
<li><a href="#L2290">Gloze</a></li>
</ul>
</li>
- <li><a href="#SPARQL">SPARQL queries as N3 sources</a>
+ <li><a href="#SPARQL">SPARQL queries as N3 sources</a>
<ul>
<li><a href="#L1134">SPARQL language</a></li>
<li><a href="#L2107">Caveats</a></li>
@@ -68,7 +68,7 @@
</ul>
</li>
<li><a href="#Reading1">Reading UML Textual files, UMT (simplified
- UML )</a>
+ UML )</a>
<ul>
<li><a href="#Syntax">Syntax</a></li>
<li><a href="#Usage">Usage</a></li>
@@ -76,7 +76,7 @@
</li>
</ul>
</li>
- <li><a href="#L939">Manipulating projects</a>
+ <li><a href="#L939">Manipulating projects</a>
<ul>
<li><a href="#L1191">Sub-projects</a></li>
<li><a href="#L1200">Pipeline of projects (post-processing)</a></li>
@@ -86,14 +86,14 @@
<li><a href="#Finding1">Finding data on the Web</a></li>
<li><a href="#Finding11">Finding rules on the Web; rules for OWL
concepts</a></li>
- <li><a href="#Global1">Local tools</a>
+ <li><a href="#Global1">Local tools</a>
<ul>
<li><a href="#Show">Show graph</a></li>
<li><a href="#Show1">Show N3 parse tree</a></li>
<li><a href="#Show2">Show original source of N3 document</a></li>
</ul>
</li>
- <li><a href="#Global">Global tools</a>
+ <li><a href="#Global">Global tools</a>
<ul>
<li><a href="#L3377">Search</a></li>
<li><a href="#Generate">Generate Java code</a></li>
@@ -102,12 +102,12 @@
<li><a href="#L33241">Export as XML</a></li>
</ul>
</li>
- <li><a href="#Interopera">Interoperability with Protégé</a>
+ <li><a href="#Interopera">Interoperability with Protégé</a>
<ul>
<li><a href="#L3588">SWRL</a></li>
</ul>
</li>
- <li><a href="#L2935">Interoperability with RDF SPARQL servers</a>
+ <li><a href="#L2935">Interoperability with RDF SPARQL servers</a>
<ul>
<li><a href="#L2943">Joseki</a></li>
<li><a href="#L2958">Sesame</a></li>
@@ -117,21 +117,21 @@
</ul>
</li>
<li><a href="#Examples">Examples</a></li>
- <li><a href="#L3193">Other useful tools</a>
+ <li><a href="#L3193">Other useful tools</a>
<ul>
<li><a href="#L3221">Export from N3/RDF</a></li>
<li><a href="#L3234">Import to N3/RDF</a></li>
</ul>
</li>
<li><a href="#N-Triple">N-Triples, Turtle, and N3 formats</a></li>
- <li><a href="#Logic">Logic</a>
+ <li><a href="#Logic">Logic</a>
<ul>
<li><a href="#Logic1">N3 Logic</a></li>
<li><a href="#Coherent">Coherent Logic</a></li>
<li><a href="#buit-ins">CWM built-ins</a></li>
<li><a href="#Euler">Euler built-ins</a></li>
<li><a href="#EulerGUI">EulerGUI Drools N3 engine built-ins</a></li>
- <li><a href="#Translatin">Translating N3 into Drools language</a>
+ <li><a href="#Translatin">Translating N3 into Drools language</a>
<ul>
<li><a href="#Forward">Forward chaining engine and First Order
Logic</a></li>
@@ -143,19 +143,19 @@
</li>
</ul>
</li>
- <li><a href="#TODO">Missing features</a>
+ <li><a href="#TODO">Missing features</a>
<ul>
<li><a href="#Implemente">Implemented features</a></li>
</ul>
</li>
- <li><a href="#Developmen">Development</a>
+ <li><a href="#Developmen">Development</a>
<ul>
<li><a href="#Building">Building from sources</a></li>
<li><a href="#Create">Create an eclipse project</a></li>
- <li><a href="#Uploading">Uploading stuff on the Maven repository on
- Sourceforge</a></li>
+ <li><a href="#Uploading">Compiling dependencies and uploading them on the
+ Maven repository on Sourceforge</a></li>
<li><a href="#Making">Making a release</a></li>
- <li><a href="#Test">Test</a>
+ <li><a href="#Test">Test</a>
<ul>
<li><a href="#L1845">Accelerate tests</a></li>
<li><a href="#L1980">Gui functional tests</a></li>
@@ -165,7 +165,7 @@
<li><a href="#Debug">Debug</a></li>
</ul>
</li>
- <li><a href="#Architectu">Architecture</a>
+ <li><a href="#Architectu">Architecture</a>
<ul>
<li><a href="#Actual">Actual stuff</a></li>
<li><a href="#Stuff">Stuff to refactor</a></li>
@@ -325,7 +325,7 @@
href="http://eulergui.sourceforge.net/tmp/?C=M;O=D">http://eulergui.sourceforge.net/tmp/?C=M;O=D</a></p>
<p><img alt="euler" src="../src/main/resources/n3_project/euler.png" width="32"
-height="32" /> <img alt="drools"
+height="32" /> <img alt="drools"
src="../src/main/resources/n3_project/drools.png" width="45" height="44" />
<img alt="http://parser4j.sourceforge.net/_parser4j_logo.gif"
src="http://parser4j.sourceforge.net/_parser4j_logo.gif" width="73" height="48"
@@ -2457,7 +2457,8 @@
</table>
<p>This is in the source in a script named
-<strong><code>install_packages_ubuntu.sh</code></strong> .</p>
+<strong><code>install_packages_ubuntu.sh</code></strong> , that does in fact
+more .</p>
<p></p>
@@ -2648,14 +2649,15 @@
downloaded sources, make eulergui project dependent from parser4j , and remove
M2_REPO/**/parser*.jar from the libraries of project eulergui .</p>
-<h3 id="Uploading">Uploading stuff on the Maven repository on Sourceforge</h3>
+<h3 id="Uploading">Compiling dependencies and uploading them on the Maven
+repository on Sourceforge</h3>
<p>As specified in pom.xml, the Maven repository for EulerGUI is here:</p>
<p><a
href="http://eulergui.sourceforge.net/maven2">http://eulergui.sourceforge.net/maven2</a></p>
-<p></p>
+<p><strong>Parser4J</strong></p>
<p>Do this to upload on the EulerGUI Maven repository on Sourceforge the latest
.jar from the Parser4J Sourceforge project:</p>
@@ -2663,7 +2665,10 @@
<table border="1">
<tbody>
<tr>
- <td><pre>ant -f buildjar.xml
+ <td><pre>svn co https://parser4j.svn.sourceforge.net/svnroot/parser4j/trunk/parser4j/ \
+ parser4j
+# create an eclipse project from the parser4j directory; this will compile all
+ant -f buildjar.xml
VERSION=trunk
mvn deploy:deploy-file \
-Durl=sftp://web.sourceforge.net/home/groups/e/eu/eulergui/htdocs/maven2 \
@@ -2984,7 +2989,7 @@
<h4 id="L1845">Accelerate tests</h4>
-<p>I you're in a hurry, type this, which will avoid searching for Maven plugin
+<p>If you're in a hurry, type this, which will avoid searching for Maven plugin
updates, and reading from the Internet all the POM for project dependencies
:</p>
@@ -3022,7 +3027,9 @@
</tbody>
</table>
-<p></p>
+<p>And if you're in a BIG hurry (but that's not recommanded) you can skip tests
+with :</p>
+<pre>-Dmaven.test.skip=true </pre>
<h4 id="L1980">Gui functional tests</h4>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|