This repository has been archived by the owner on Oct 10, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththoughts.txt
73 lines (54 loc) · 5.4 KB
/
thoughts.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Parser operations:
===================
Simple operations:
ParseLiteral, ParseRegex, ParseSpace(inc./exc. new lines), ParseComment(line, block), ParseNatural, ParseBigIdent, ParseSmallIdent, ParseEof
[ParserData]->simpleOperation() -> ;
simpleOperation() semOut [ParserData]-> semOp() -> semIn simpleOperation() ;
Simple operations rarely have own semantics.
Base class for all simple operations: SimpleParseOp
Combining operations:
ParseOptional
[ParserData]-> (ParseOptional) -> ;
parseOptional() subOut [ParserData]-> subOp() -> subIn parseOptional() ;
parseOptional() semOut [ParserData]-> semOp() -> semIn parseOptional() ;
ParseOptional rarely has own semantics (the subresult is used or null).
ParseMultiple(min, max)
[ParserData]-> (ParseMultiple) -> ;
parseMultiple() subOut [ParserData]-> subOp() -> subIn parseMultiple() ;
parseMultiple() semOut [ParserData]-> semOp() -> semIn parseMultiple() ;
ParseMultiple rarely has own semantics (a list of the subresults/subtexts is used).
Base class for ParseOptional and ParseMultiple: CombineSingleParseOp
ParseAll
[ParserData]-> (ParseAll) -> ;
parseAll subOut.i [ParserData]-> subOp() -> subIn.i parseAll() ;
parseAll() semOut [ParserData]-> semOp() -> semIn parseAll() ;
ParseAll usually has own semantics (the complete text is used as fall back).
ParseAlternatives
[ParserData]-> (ParseAlternatives) -> ;
parseAlternatives subOut.i [ParserData]-> subOp() -> subIn.i parseAlternatives() ;
ParseAlternatives has no own semantics!!!
Base class for ParseAlternatives and ParseAll: CombineMultipleParseOp
ParserData {
Feedback feedback;
SourceData source;
ParseResult result;
List<ParseResult> subResults;
}
SourceData {
String name;
String content;
int pos;
}
ParseResult {
boolean matched;
int pos;
String text;
Object value;
}
Utilities:
String ParserUtil.where(source, pos)
String ParserUtil.addError(parserData, pos, message)
Reduced class path for generating the parser:
-classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar:/Users/obulbuk/work/flowdev/flowparser/target/classes:/Users/obulbuk/work/flowdev/jbase/target/classes:/Users/obulbuk/.m2/repository/se/romanredz/mouse/mouse/1.5.1/mouse-1.5.1.jar:/Applications/IntelliJ IDEA 13 CE.app/lib/idea_rt.jar"
Full class path:
-classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/JObjC.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Users/obulbuk/work/flowdev/flowparser/target/classes:/Users/obulbuk/work/flowdev/jbase/target/classes:/Users/obulbuk/.m2/repository/net/sf/jopt-simple/jopt-simple/4.4/jopt-simple-4.4.jar:/Users/obulbuk/.m2/repository/com/github/spullara/mustache/java/compiler/0.8.10/compiler-0.8.10.jar:/Users/obulbuk/.m2/repository/com/google/guava/guava/13.0.1/guava-13.0.1.jar:/Users/obulbuk/.m2/repository/se/romanredz/mouse/mouse-runtime/1.5.1/mouse-runtime-1.5.1.jar:/Users/obulbuk/.m2/repository/jparsec/jparsec/2.0.1/jparsec-2.0.1.jar:/Users/obulbuk/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/obulbuk/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/obulbuk/.m2/repository/org/easymock/easymock/2.0/easymock-2.0.jar:/Applications/IntelliJ IDEA 13 CE.app/lib/idea_rt.jar"