This repository has been archived by the owner on May 26, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
epsilon.tool
187 lines (167 loc) · 6.78 KB
/
epsilon.tool
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
Epsilon
Compiler-Generator for Oberon Version 2.01
Edit.Open ^
eAnalyser.Analyse ^
Examples.Eps Eta.Eps
OberonO.Eps OberonOFrontend.Eps OberonOUnequal.Eps
AbstractSyntax.Eps TypeTables.Eps TypeResolution.Eps
SymbolTables.Eps SymbolResolution.Eps TypeCheck.Eps
Example1.Eps NotOEAG1.Eps NotOEAG2.Eps
NotOEAG3.Eps NotOEAG4.Eps DeclAppl.Eps
SLEAG/LEAG compiler generation:
eAnalyser.Analyse * eAnalyser.Analyse @
eScanGen.Generate
ePredicates.Check
eSLEAGGen.Test eELL1Gen.Test
eELL1Gen.Generate -ws
Single Sweep compiler generation:
eAnalyser.Analyse * eAnalyser.Analyse @
eScanGen.Generate
ePredicates.Check
eSSweep.Test eELL1Gen.Test
eSSweep.Generate -ws
eELL1Gen.GenerateParser
SOAG compiler generation:
eAnalyser.Analyse * eAnalyser.Analyse @
eScanGen.Generate
eSOAGGen.Generate -ws
eELL1Gen.Test
eELL1Gen.GenerateParser
Compiler.Compile *\s eSplit.Split -102 *
Edit.Open ^
Sample.Mod BigSample.Mod Error.Mod
Pico.Cola Mikro.Cola PL0.Cola
System.Free S* OberonO* Eta* DeclAppl*~
S.Compile -vw @ OberonO.Compile -v @ Eta.Compile -i @
OberonOa.Compile @ OberonOb.Compile @ OberonOc.Compile @
OberonOd.Compile @ OberonOe.Compile @ OberonOf.Compile @
DeclAppl.Compile @
eErrorElems.Insert ^ eErrorElems.Remove
eErrorElems.Next !eErrorElems.Repair
Options:
of the Epsilon compiler generator (generation commands):
-c: disable collapsing constant trees
-r: disable reference counting in generated compiler
-m: modules are shown, not compiled directly
-p: parser ignores regular token marks at Hypernonterminals
-w: open new window with compilation output as default
-s: generated compiler uses a space instead of a newline
as separator in compilation output
-o: disable optimizing of variable storage in generated compiler
of the generated compilers:
-i: show heap usage information
-v: verbose parser error messages
-w: toggle default value for opening window
Commands of the Epsilon compiler generator:
eAnalyser.Analyse ( * | @ | ^ | filename )
internalizes an Epsilon specification. All further commands use this
internalized version. Errors are reported. eAnalyser.Warnings shows
warnings.
eScanGen.Generate [ -m ]
generates a scanner.
ePredicates.Check
computes the predicates in the specification. ePredicates.List shows
them. Needed by all further commands.
eSLEAGGen.Test
checks for SLEAG evaluability. Needed for a one pass compiler.
eELL1Gen.Test [ -p ]
checks for ELL(1) parsability.
eELL1Gen.Generate [ -crmpws ]
generates complete one pass compiler. Consists of ELL(1) parser and
SLEAG evaluator. Needs a scanner.
eELL1Gen.GenerateParser [ -mp ]
generates a separate parser for a compiler with a
single sweep evaluator. Needs a scanner.
eSSweep.Test
checks for single sweep evaluability.
eSSweep.Generate [ -crmws ]
generates a single sweep evaluator. Needs a separate parser.
This command must be executed before eELL1Gen.GenerateParser
(restriction of implementation).
eSOAGGen.Generate [ -crmso ]
generates a SOAG evaluator. Needs a separate parser.
This command must be executed before eELL1Gen.GenerateParser
(restriction of implementation).
eSplit.Split [-num] [-m] ( * | @ | ^ | filename )
splits generated module into num MOD 100 smaller modules plus
num DIV 100 basemodules. Needed for large modules, that can't
be compiled with the standard Oberon compiler (error 210).
Doesn't work for moduls generated by SOAG evaluator generator.
eErrorElems.Insert [ ^ ]
reads specified error messages of a generated compiler and inserts
eErrorElems into the marked text.
eErrorElems.Remove
removes all eErrorElems from the marked text.
eErrorElems.Next
shows the next eErrorElem in the marked text and sets the caret.
eErrorElems.Repair
repairs parser defined syntax errors in the marked text with
eErrorElems inserted. Requires compiler option -v (verbose).
Commands of the generated compilers:
Name.Compile [-ivw ] ( * | @ | ^ | filename )
compiles the specified input.
Name.Reset
frees allocated heap space.
Installation:
Compiler.Compile eSets.Mod /s eIOV4.Mod /s eScanner.Mod /s
eEAG.Mod /s eEarley.Mod /s eAnalyser.Mod /s ePredicates.Mod
eEmitGen.Mod /s eSLEAGGen.Mod /s eScanGen.Mod /s eShift.Mod /s
eELL1Gen.Mod /s eSSweep.Mod /s eSplit.Mod /s eErrorElems.Mod /s
eALists.Mod /s eASets.Mod /s eBSets.Mod /s eStacks.Mod /s
eLIStacks.Mod /s eSOAG.Mod /s eSOAGProtocol.Mod /s
eSOAGPartition.Mod /s eSOAGHash.Mod /s eSOAGVisitSeq.Mod /s
eSOAGOptimizer.Mod /s eSOAGGen.Mod /s ~
TOC 1: Epsilon.Cod (28 Mod, 5 Fix, 1 Tool file)
AsciiCoder.CodeFiles % eSets.Mod eIOV4.Mod eIOS3.Mod
eScanner.Mod eEAG.Mod eEarley.Mod eAnalyser.Mod
ePredicates.Mod eEmitGen.Mod eSLEAGGen.Mod eSLEAGGen.Fix
eScanGen.Mod eScanGen.Fix eELL1Gen.Mod eELL1Gen.Fix
eShift.Mod eSSweep.Mod eSSweep.Fix
eALists.Mod eASets.Mod eBSets.Mod eStacks.Mod eLIStacks.Mod
eSOAG.Mod eSOAGProtocol.Mod eSOAGPartition.Mod
eSOAGHash.Mod eSOAGVisitSeq.Mod eSOAGOptimizer.Mod
eSOAGGen.Mod eSOAG.Fix
eSplit.Mod eErrorElems.Mod eEpsilon.Tool ~
TOC 2: EpsilonExamples.Cod (22 Eps, 6 sample files)
AsciiCoder.CodeFiles % Examples.Eps Eta.Eps OberonO.Eps
OberonOUnequal.Eps OberonOFrontend.Eps
AbstractSyntax.Eps TypeTables.Eps TypeResolution.Eps
SymbolTables.Eps SymbolResolution.Eps TypeCheck.Eps
Example1.Eps Example2.Eps Example3.Eps Example4.Eps
Example5.Eps Example6.Eps DeclAppl.Eps
NotOEAG1.Eps NotOEAG2.Eps NotOEAG3.Eps NotOEAG4.Eps
Pico.Cola Mikro.Cola PL0.Cola
Sample.Mod BigSample.Mod Error.Mod ~
History:
22.08.96: Version 1.00
02.10.96: small changes in the generated source code (renaming),
renaming of eIO.Mod -> eIOV4.Mod (because of this it's
possible to keep several eIO versions)
14.10.96: major changes to eScanGen.Mod and eErrorElems.Mod
minor changes to eScanner.Mod, eEarley.Mod and eEpsilon.Tool
layout corrections to eIO.Mod, eShift.Mod, eSSweep.Mod,
eELL1Gen.Mod, eSSweep.Fix, eELL1Gen.Fix
22.10.96: Version 1.01
options changed (f -> r, r -> p),
generated modules are compiled, new flag -m,
new command eSplit.Split,
renamings in several modules
15.11.96: eSplit can generate several basemodules
corrections in eAnalyser
22.11.96: Version 1.02
major changes in eSLEAGGen.Mod & eScanGen.Fix
bugfix in eSplit.Mod and a lot renaming
generated compilers have new command "reset"
eIOS3.Mod included
eELL1Gen.Mod & .Fix: 2 sets for first, follow, exp, rec
04.12.96: bugfix in eSLEAGGen.Mod: Repetition
errorIdent in eScanner umgelegt,
eELL1Gen: sepTok führt zu Verlassen von Rep.-Modus
16.12.96: Version 1.03 (final release)
bugfixes in repetitions in eSLEAGGen.Mod
27.03.98: Version 2.00
integration of SOAG evaluator generator
changes to SLEAGGen.Mod, SLEAGGen.Fix, SSweep.Fix
21.04.98 Version 2.01
adaptation of compatibility of SLEAG/LEAG compiler generation
changes to SLEAGGen.Mod