Compare commits
645 Commits
unify
...
strucTypes
Author | SHA1 | Date | |
---|---|---|---|
23786184ad | |||
55f6fe47ac | |||
4919dd34b2 | |||
c08d4b8457 | |||
aac113e12e | |||
d2d02e26f0 | |||
e9d5d5f7c7 | |||
092ee53f74 | |||
413cb48a96 | |||
e0d5699ae7 | |||
3f2558d21e | |||
24f93f0bcb | |||
f44f08b895 | |||
814aef082d | |||
5a0e53485c | |||
e972282620 | |||
f7160c10f4 | |||
7a5940ac65 | |||
86e94b8cc0 | |||
25a5e79509 | |||
7e1d6fad01 | |||
c7e0281d53 | |||
23ae5d5745 | |||
bb26112a9b | |||
97d893e66b | |||
57fb90afaf | |||
63ac79f02c | |||
07fa62d11d | |||
66587a8f71 | |||
581e5e574e | |||
ae14dfd947 | |||
9d53d9d5d1 | |||
58f5e17ab5 | |||
6fce2760c5 | |||
1de897fb1f | |||
87dede5d5f | |||
f085f9f499 | |||
a40d2b991f | |||
704415ae3b | |||
65531ac12e | |||
34e632b872 | |||
3470215bae | |||
f5398fa8e9 | |||
f617ad8946 | |||
876ec6a4f6 | |||
26d9b1215f | |||
0f29bc038a | |||
a5ed5a2a46 | |||
c597b0430a | |||
06a0cb8eaf | |||
b5a601d798 | |||
7ea6777906 | |||
6b1896f58c | |||
d81c06cdd9 | |||
8baff8f376 | |||
427a87598c | |||
bc2cab8c95 | |||
dca5d21c23 | |||
51a2acdbaf | |||
dcc36f082f | |||
9575afd0b4 | |||
403430d0c4 | |||
d9ab487253 | |||
5c797a44a1 | |||
87dbcfdad4 | |||
8048af2106 | |||
e4243b612c | |||
da4c59f2cf | |||
1c22fc7d57 | |||
0b7aea21d9 | |||
521a1cbf3b | |||
22ca2cbd4a | |||
49ea4ee283 | |||
225dc16a89 | |||
6f85c2b376 | |||
a17342458e | |||
4738add4fc | |||
ab46709390 | |||
bc99dc4c8b | |||
2bbf9eac36 | |||
a785c85d42 | |||
48e22982c8 | |||
3ed300268f | |||
ec2b501e63 | |||
8be4f94edf | |||
1b6cae1be0 | |||
41774b3faf | |||
62d44eb15c | |||
5f8c73f176 | |||
0ae777b4ac | |||
087170bdbf | |||
93d0caaefb | |||
1f031149d3 | |||
fc870fd706 | |||
4450f5c0cd | |||
478a2df3dc | |||
59243d9f94 | |||
82b08c5aae | |||
615983bf37 | |||
21bc2a67a1 | |||
52a96d7253 | |||
fef4d27d21 | |||
603c4c9c46 | |||
baee0024e9 | |||
1baaf79f8c | |||
52f480147e | |||
9717c54d53 | |||
c271c689de | |||
24c27303dd | |||
117106a7b3 | |||
5680f913ef | |||
ebacb72dcb | |||
22ff521d08 | |||
32ab198f9e | |||
fae26a8f26 | |||
bb5a4e8580 | |||
000c16b907 | |||
663ce36e22 | |||
87a2ed8117 | |||
a0de7a4467 | |||
ce2b4e0303 | |||
4886976752 | |||
daf684deef | |||
0b680f831d | |||
41c87e3085 | |||
52dd0e6276 | |||
bcee5e5209 | |||
95e9b2dbda | |||
72f27fab7a | |||
06bb978cf6 | |||
dbe05bb718 | |||
9a735e86dd | |||
240d57a8ba | |||
dd18c7c40e | |||
45ccfb58e3 | |||
4ac99b61bf | |||
f107c8d1f7 | |||
f29faa2680 | |||
161c1a1b53 | |||
6b1a4eddfc | |||
ae7a63fbca | |||
79810be94f | |||
8870bc326c | |||
e1c6369bcb | |||
46255efb70 | |||
fb77f9192f | |||
a71e56ea97 | |||
5dfa6769b2 | |||
77be216ee5 | |||
100db9baac | |||
e1f579664a | |||
7a9c0a1e69 | |||
7e5aa852d7 | |||
5d39863cc6 | |||
01dd4e57e6 | |||
6faffdf90c | |||
f4bc057aff | |||
78db0f0177 | |||
3233ccd845 | |||
b0b1426e20 | |||
103c7e4b14 | |||
3638edfa73 | |||
bd98bed5ca | |||
6299086297 | |||
de5b43d72b | |||
7e6dee8e1d | |||
dafcd2f125 | |||
6a5ababa51 | |||
273ddb92d7 | |||
4a2b901465 | |||
dea3da3b69 | |||
13c70148a8 | |||
bb5945898a | |||
123f94aea7 | |||
dff72b0c97 | |||
1667b394f2 | |||
95943b1627 | |||
0315a1f144 | |||
52a5fd7904 | |||
b5b5b5d9c9 | |||
83aaff140c | |||
3deaceec01 | |||
9862df9e63 | |||
9f2702276f | |||
87cf674352 | |||
dfd6a1f532 | |||
e8388e2748 | |||
095f9a7956 | |||
c4aec8379e | |||
ccc16fd22b | |||
54cf24926e | |||
94d39ee21a | |||
725b071d28 | |||
284af1246b | |||
f453343f1c | |||
bb016e6417 | |||
831bf1fe17 | |||
cba489f279 | |||
9f3439a15e | |||
356b8a7a34 | |||
ab37e1a607 | |||
18545cff9a | |||
9840281d83 | |||
6256bdfe2e | |||
6a9db81981 | |||
53087a8e04 | |||
aa631b5099 | |||
a3a02fe475 | |||
99ce7c1122 | |||
cef82c6359 | |||
67fe88215a | |||
f31023b4fa | |||
a733eee8b5 | |||
15f5a2dc76 | |||
6fcaafe477 | |||
35b99a4095 | |||
327f36f1c2 | |||
6b57aacef0 | |||
f023754328 | |||
77aaa0ecb6 | |||
9f9a94b5cf | |||
b66d06a165 | |||
92b110a971 | |||
2277f68509 | |||
1c0fa6a820 | |||
59569380ed | |||
4fbcf87e0c | |||
10b5d87119 | |||
73c37027d9 | |||
8e198679c7 | |||
419e4a6d0e | |||
5cd2ee7d80 | |||
9c35f04a09 | |||
6808535f67 | |||
ac4a79f0e7 | |||
89246ece5c | |||
7c2f7c54dd | |||
c747ab0885 | |||
6cf98f200b | |||
ed3a3909c0 | |||
d53faa0c86 | |||
b7bb0fa1c4 | |||
166aa5e506 | |||
5270cecec9 | |||
f6e0c561bb | |||
a45aa50574 | |||
191a1166b9 | |||
6e770b5ec5 | |||
87fe51767c | |||
f0610aeff1 | |||
e4fbd17a55 | |||
9c526f20fb | |||
1f269918fb | |||
2d5c863008 | |||
22499f09e8 | |||
1f89238fe4 | |||
c61dd5411e | |||
52487f3389 | |||
5a3dcd7100 | |||
2f994cdfa8 | |||
9c4f763c9a | |||
8f9c07d88e | |||
b32e437a05 | |||
48e2d2eec2 | |||
1a1ab2696d | |||
1888eb6d46 | |||
56d919f446 | |||
15d120d594 | |||
e556a470e7 | |||
398c1992fa | |||
9a94ba2114 | |||
cdcebdd4ac | |||
8e4791cca6 | |||
3ce4937bc1 | |||
027538a082 | |||
39793b461e | |||
29173ba172 | |||
5d94820fed | |||
c7dea4c86b | |||
ede55d228e | |||
0610ea8e63 | |||
9186f5dff5 | |||
5c9b40e0b7 | |||
8d12821c68 | |||
311d7ee63a | |||
bd0678f362 | |||
a08e2e8815 | |||
47689f2fc6 | |||
b7aca99301 | |||
8920b32020 | |||
1f5071d4e4 | |||
da41857a4f | |||
09dcdaeb96 | |||
6d0392956d | |||
542f87e8a3 | |||
57df329751 | |||
7b24e2d83f | |||
b1b1cfdc54 | |||
672373fc8d | |||
ab86cc3229 | |||
0c19cc7400 | |||
268056542b | |||
19a1ef4024 | |||
3c732346d9 | |||
01339ca7ec | |||
6ddc4983b0 | |||
719d1a5ced | |||
90a9273fc2 | |||
009a638c9a | |||
55be865ab4 | |||
01fd396d29 | |||
dccdc5da2b | |||
940c922c80 | |||
bdc2a83b1c | |||
d989100b47 | |||
f015ef75f7 | |||
5f731bb09c | |||
09bdaa6a21 | |||
e8757a179f | |||
3a444c0172 | |||
ab36050f9b | |||
9919ecd083 | |||
7d8e8249ed | |||
fb0ef510b2 | |||
72fdf2dca8 | |||
eb8db0e0eb | |||
5386227a34 | |||
5e675b9a93 | |||
fd8df92c03 | |||
eddac2c8ed | |||
a8274bdc69 | |||
e702f745c3 | |||
4616f82b09 | |||
dbe47f41c1 | |||
b55d0779e9 | |||
928396927e | |||
9a886ed223 | |||
16e14f9363 | |||
b51d8356b7 | |||
48dc76646b | |||
fea86460e8 | |||
01703a73c5 | |||
bb5e697699 | |||
5a026a431c | |||
1d767a7696 | |||
d2fa9e00f8 | |||
934e5f85f8 | |||
bfa106913b | |||
44f4aa4b27 | |||
a69b827805 | |||
0c80a4c343 | |||
e18439918c | |||
b116139357 | |||
040300d78e | |||
c442e2ac17 | |||
9607fcf980 | |||
cecec91f74 | |||
8c00d89731 | |||
d5d74fef85 | |||
36bb442bff | |||
c595925112 | |||
0116643bc1 | |||
8d6a722cec | |||
672d40c557 | |||
94c69cca55 | |||
843dd7453d | |||
ad36158a47 | |||
7de617f0c1 | |||
6738eecdf3 | |||
a011061f22 | |||
15e18c5907 | |||
4c213eb3cf | |||
a194bdbc9f | |||
e341d9075e | |||
b104ff591f | |||
bf8e6d1492 | |||
bd024d9f4a | |||
a78b7c5af3 | |||
5d5132faf4 | |||
0a8236cd86 | |||
7f888a1bf8 | |||
fa92fee98d | |||
43413d5e3c | |||
d24b2fa7d6 | |||
db9298e383 | |||
1e0da98c4b | |||
4b44fba421 | |||
07b159f9a3 | |||
276ff44756 | |||
b31da88902 | |||
6a1f5dc248 | |||
0e2390a80a | |||
8ce017c2f2 | |||
b8a5795bb3 | |||
9b960329fc | |||
b1adc4671d | |||
6e03d24582 | |||
f81496fe1f | |||
201a0978bc | |||
98331af3c0 | |||
a355fe7786 | |||
ea1e81bb95 | |||
b6f62b48eb | |||
995af3004a | |||
5c66212afb | |||
9a233e437b | |||
9918e78f97 | |||
d245aa7367 | |||
3d07f60145 | |||
7c3181c3f0 | |||
b251a646ca | |||
276f235b56 | |||
866429ffe7 | |||
4b21f03a5a | |||
a7e1a5e2c2 | |||
932b277dcc | |||
45c85b7686 | |||
ff59b585bd | |||
397ac3cd58 | |||
77c59de0f0 | |||
6e72bbab16 | |||
43f017a224 | |||
9a7e717c25 | |||
6b98bf6a58 | |||
bbc61c67a9 | |||
1023ed8557 | |||
3274f12922 | |||
52f562b570 | |||
a9c49676a9 | |||
856f9b059d | |||
ae02ee247a | |||
0cf8f82283 | |||
1e6f046eff | |||
841ac5fcbf | |||
3b95cdd76f | |||
057df7c702 | |||
86f29f1396 | |||
0f6381f30b | |||
adda1db195 | |||
2167a4288e | |||
0ad97251ca | |||
87d2edaaa6 | |||
fc6040da39 | |||
d64823ea30 | |||
3b8ef58222 | |||
0aa18c74ba | |||
726eb60eb3 | |||
afd3f32f23 | |||
3173cccefa | |||
e6c58d44c2 | |||
1be1bb83ca | |||
2c25e56a76 | |||
c272688b2d | |||
cf6d9880e3 | |||
920eea43ad | |||
70ca62202d | |||
44481b4140 | |||
7a337843e6 | |||
fcca50ed78 | |||
5f31150dc8 | |||
2129299eed | |||
a48cbae5a5 | |||
b395f6e137 | |||
810164ac17 | |||
4a52bc0e6e | |||
2c999d0eb6 | |||
058402e056 | |||
43bfc551ff | |||
4261ce2603 | |||
88ea14bbe8 | |||
a9909d5f32 | |||
caa7f7deee | |||
f05222fb56 | |||
5cc418371d | |||
e5d3d67dad | |||
3d835304cf | |||
29a17731fd | |||
18965e0eda | |||
af1f7f28e2 | |||
e1af4e1f65 | |||
ed56e24ff6 | |||
dad08cfa46 | |||
f920269e51 | |||
5d32f20a51 | |||
42010c5859 | |||
0c4cdd63b5 | |||
c02a3480e8 | |||
561f1d1150 | |||
30099f5e50 | |||
de91e49bcc | |||
4ecf526b14 | |||
56e4192df4 | |||
c480e25805 | |||
47f1f9ad54 | |||
d0eb091666 | |||
c8beb9579e | |||
92c284a04b | |||
5fab817154 | |||
a38b796a6f | |||
d9cc613600 | |||
2cdca93077 | |||
9fae52e1e6 | |||
4c4c0d5ada | |||
a44baeaa34 | |||
0b17894ed2 | |||
52f51c7932 | |||
a51cef7100 | |||
2e9a71a18d | |||
fbcb369f1c | |||
32d262341a | |||
d5ba34e620 | |||
d63fe45d08 | |||
d328faeee2 | |||
15f8a1b99d | |||
72bf03ec58 | |||
18d477ba07 | |||
40d87c8636 | |||
fb629b417f | |||
3299f329ea | |||
656b014ad4 | |||
fa4a24c653 | |||
d9b81224b6 | |||
b5a2d64a7b | |||
7f05966093 | |||
cca2da8018 | |||
e9e2d5c27b | |||
5c36e68825 | |||
60a304667a | |||
50a618ee4b | |||
8d0f24f2f8 | |||
d064f16de4 | |||
39747f4138 | |||
ade687483c | |||
d55d6734d9 | |||
77fbe99fed | |||
bee92ef11d | |||
f92a53ce74 | |||
acf9cbd20b | |||
049f435537 | |||
f2ddce2e89 | |||
a4dc47cc4e | |||
10ede1ba98 | |||
a77b65e65c | |||
a1bbd8b11e | |||
e8537c3886 | |||
c3320858a3 | |||
68476f9f96 | |||
fbfa407c26 | |||
5814cac83f | |||
9ef41280ca | |||
0db15bffa8 | |||
4c79023889 | |||
72bcfd41d3 | |||
e4e98797fc | |||
647196bf16 | |||
3c6ffcf4d8 | |||
fb10220da9 | |||
599c8b2573 | |||
f0028f6aaf | |||
5f61d478fa | |||
aed261c807 | |||
3b6363d71a | |||
ddbcc5ee6e | |||
1b99f74f39 | |||
7b9a00a7e6 | |||
c329ba6cef | |||
3ab96a3ed7 | |||
76880708a1 | |||
e84d6373c7 | |||
a35bcd490b | |||
40ba5fb621 | |||
ad02e94967 | |||
c34b3c4c14 | |||
01a954ca68 | |||
5c6b001ae1 | |||
fc43cd11da | |||
e1d68291c9 | |||
b0a6585252 | |||
81e223334b | |||
82a1e86186 | |||
aff39ba442 | |||
343c7d3a55 | |||
c1cbb78fe5 | |||
4e43de987d | |||
717fd5d53e | |||
d9e6ef6e47 | |||
b2e5555da5 | |||
c5ea9a3464 | |||
52a5e54c3a | |||
264ede100c | |||
d651a6cdff | |||
c9e3743fb5 | |||
7d38c9af43 | |||
cdb1850668 | |||
90b6e81195 | |||
7606aee9c3 | |||
7504211df2 | |||
7d09131c27 | |||
388685d3b2 | |||
642394c25b | |||
85dc60169a | |||
73e6e5c45f | |||
1a94f449a0 | |||
6a4cb673bf | |||
accbe5bbfc | |||
c4aff43f71 | |||
107201c00c | |||
e60e6b622c | |||
a33ce04734 | |||
b05b0ea5df | |||
a1227a8b1b | |||
a5c34896ba | |||
bc812ad083 | |||
1ac500715b | |||
5be508e943 | |||
aa6a6beb93 | |||
dbe09c237c | |||
592af65c08 | |||
25329cd39e | |||
5aebc06337 | |||
0896cf8236 | |||
81c8764fc6 | |||
eb0da3c36a | |||
dab2087f0a | |||
e19dee4c99 | |||
f88d58d548 | |||
9d9526ae72 | |||
86a94dfae9 | |||
fe35a1f56d | |||
5821839cbc | |||
b6df854cc6 | |||
52b6f438b0 | |||
07ea25b5b7 | |||
0d51c3e94d | |||
47c2b78713 | |||
58db64ad22 | |||
b67816775e | |||
748f25a2fd | |||
223f6facc7 | |||
edda41f546 | |||
5d760d4222 | |||
ae01af7a40 | |||
db93a1dfe1 | |||
f17745bfa5 | |||
0a6aa450db |
14
.classpath
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="BCEL"/>
|
||||
<classpathentry excluding=".classpath|.cvsignore|.externalToolBuilders/|.project|.settings/|Papers/|bin/|doc/|examples/|lib/|notizen/|src/|test/|tools/|BCEL/" including="log4j.xml" kind="src" path=""/>
|
||||
<classpathentry kind="src" path="test"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry kind="lib" path="lib/junit-4.0.jar" sourcepath="/home/janulrich/.m2/repository/junit/junit/4.0/junit-4.0-sources.jar"/>
|
||||
<classpathentry kind="lib" path="lib/cloning.jar"/>
|
||||
<classpathentry kind="lib" path="lib/guava-10.0.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-bcel6-6.0-SNAPSHOT.jar" sourcepath="/home/janulrich/Development/intellijworkspace/bcel/src/main/java"/>
|
||||
<classpathentry kind="lib" path="lib/bcel-6.0-SNAPSHOT.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
12
.cvsignore
@ -1,12 +0,0 @@
|
||||
bin
|
||||
*.class
|
||||
output*
|
||||
JavaLexer.java
|
||||
JavaParser.java
|
||||
*.~*~
|
||||
*.aux
|
||||
*.dvi
|
||||
*.log
|
||||
y.output
|
||||
Bytecode
|
||||
JavaParserBuilder.launch
|
@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
|
||||
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
|
||||
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/JavaCompilerCore"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="JavaCompilerCore"/>
|
||||
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/JavaCompilerCore/tools/AntParserBuilderWindows.xml}"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="incremental,clean"/>
|
||||
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/JavaCompilerCore/tools}"/>
|
||||
</launchConfiguration>
|
13
.gitignore
vendored
@ -10,3 +10,16 @@ bin
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
|
||||
# IDEs
|
||||
.classpath
|
||||
*.iml
|
||||
.idea/
|
||||
/target/
|
||||
.DS_Store
|
||||
.project
|
||||
.settings/
|
||||
/target/
|
||||
|
||||
#
|
||||
manually/
|
||||
|
31
.project
@ -1,31 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>JavaCompilerCore</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>LaunchConfigHandle</key>
|
||||
<value><project>/.externalToolBuilders/JavaParserBuilder.launch</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>incclean</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -1,2 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
filesCopiedToWebInfLib=
|
@ -1,7 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//src/de/dhbwstuttgart/core/MyCompiler.java=UTF-8
|
||||
encoding//src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java=UTF-8
|
||||
encoding//src/de/dhbwstuttgart/typeinference/UndConstraint.java=UTF-8
|
||||
encoding//src/de/dhbwstuttgart/typeinference/UnifySingleConstraint.java=UTF-8
|
||||
encoding//src/de/dhbwstuttgart/typeinference/UnifyUndConstraint.java=UTF-8
|
||||
encoding/<project>=UTF-8
|
@ -1,13 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
@ -1,4 +0,0 @@
|
||||
#Sun Jul 27 10:21:29 CEST 2008
|
||||
eclipse.preferences.version=1
|
||||
instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
|
||||
internal.default.compliance=default
|
@ -1,6 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class BooleanValue {
|
||||
Boolean c = true;
|
||||
Boolean b = c.booleanValue();
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class BooleanValueCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public BooleanValueCreator() {
|
||||
_cg = new ClassGen("bcelifier.BooleanValue", "java.lang.Object", "BooleanValue.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createFields();
|
||||
createMethod_0();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createFields() {
|
||||
FieldGen field;
|
||||
|
||||
field = new FieldGen(0, new ObjectType("java.lang.Boolean"), "c", _cp);
|
||||
_cg.addField(field.getField());
|
||||
|
||||
field = new FieldGen(0, new ObjectType("java.lang.Boolean"), "b", _cp);
|
||||
_cg.addField(field.getField());
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.BooleanValue", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(new PUSH(_cp, 1));
|
||||
il.append(_factory.createInvoke("java.lang.Boolean", "valueOf", new ObjectType("java.lang.Boolean"), new Type[] { Type.BOOLEAN }, Constants.INVOKESTATIC));
|
||||
il.append(_factory.createFieldAccess("bcelifier.BooleanValue", "c", new ObjectType("java.lang.Boolean"), Constants.PUTFIELD));
|
||||
InstructionHandle ih_12 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createFieldAccess("bcelifier.BooleanValue", "c", new ObjectType("java.lang.Boolean"), Constants.GETFIELD));
|
||||
il.append(_factory.createInvoke("java.lang.Boolean", "booleanValue", Type.BOOLEAN, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
|
||||
il.append(_factory.createInvoke("java.lang.Boolean", "valueOf", new ObjectType("java.lang.Boolean"), new Type[] { Type.BOOLEAN }, Constants.INVOKESTATIC));
|
||||
il.append(_factory.createFieldAccess("bcelifier.BooleanValue", "b", new ObjectType("java.lang.Boolean"), Constants.PUTFIELD));
|
||||
InstructionHandle ih_26 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.BooleanValueCreator creator = new bcelifier.BooleanValueCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.BooleanValue.class"));
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class FieldDeclaration {
|
||||
|
||||
Integer field = methode();
|
||||
|
||||
Integer methode()
|
||||
{
|
||||
return field;
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class FieldDeclarationCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public FieldDeclarationCreator() {
|
||||
_cg = new ClassGen("bcelifier.FieldDeclaration", "java.lang.Object", "FieldDeclaration.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createFields();
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createFields() {
|
||||
FieldGen field;
|
||||
|
||||
field = new FieldGen(0, new ObjectType("java.lang.Integer"), "field", _cp);
|
||||
_cg.addField(field.getField());
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.FieldDeclaration", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("bcelifier.FieldDeclaration", "methode", new ObjectType("java.lang.Integer"), Type.NO_ARGS, Constants.INVOKEVIRTUAL));
|
||||
il.append(_factory.createFieldAccess("bcelifier.FieldDeclaration", "field", new ObjectType("java.lang.Integer"), Constants.PUTFIELD));
|
||||
InstructionHandle ih_12 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, new ObjectType("java.lang.Integer"), Type.NO_ARGS, new String[] { }, "methode", "bcelifier.FieldDeclaration", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createFieldAccess("bcelifier.FieldDeclaration", "field", new ObjectType("java.lang.Integer"), Constants.GETFIELD));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.OBJECT));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.FieldDeclarationCreator creator = new bcelifier.FieldDeclarationCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.FieldDeclaration.class"));
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
class IfStatement{
|
||||
Integer methode(Boolean b){
|
||||
if(b){
|
||||
return 1;
|
||||
}else{
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
|
||||
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||
import de.dhbwstuttgart.bytecode.ClassGenerator;
|
||||
import de.dhbwstuttgart.bytecode.MethodGenerator;
|
||||
import de.dhbwstuttgart.typeinference.TypeinferenceResults;
|
||||
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class IfStatementCreator {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGenerator _cg;
|
||||
|
||||
public IfStatementCreator() {
|
||||
|
||||
TypeinferenceResults typeinferenceResults = null;
|
||||
_cg = new ClassGenerator("bcelifier.IfStatement", new RefType("java.lang.Object", null, 0), "IfStatement.java", Const.ACC_SUPER, new String[] { }, typeinferenceResults);
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGenerator(0, Type.VOID, new Type[] { new ObjectType("java.lang.Boolean") }, new String[] { "arg0" }, "<init>", "bcelifier.IfStatement", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Const.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGenerator(0, new ObjectType("java.lang.Integer"), new Type[] { new ObjectType("java.lang.Boolean") }, new String[] { "arg0" }, "methode", "bcelifier.IfStatement", il, _cp);
|
||||
|
||||
il.append(InstructionFactory.createLoad(Type.OBJECT, 1));
|
||||
il.append(_factory.createInvoke("java.lang.Boolean", "booleanValue", Type.BOOLEAN, Type.NO_ARGS, Const.INVOKEVIRTUAL));
|
||||
BranchInstruction ifeq_4 = InstructionFactory.createBranchInstruction(Const.IFEQ, null);
|
||||
il.append(ifeq_4);
|
||||
il.append(new PUSH(_cp, 1));
|
||||
il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Const.INVOKESTATIC));
|
||||
il.append(InstructionFactory.createReturn(Type.OBJECT));
|
||||
InstructionHandle ih_12 = il.append(new PUSH(_cp, 2));
|
||||
il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Const.INVOKESTATIC));
|
||||
il.append(InstructionFactory.createReturn(Type.OBJECT));
|
||||
ifeq_4.setTarget(ih_12);
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.IfStatementCreator creator = new bcelifier.IfStatementCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.IfStatement.class"));
|
||||
|
||||
System.out.println("bcelifier.IfStatement.class");
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class IntLiteral {
|
||||
Integer methode(){
|
||||
return 50000;
|
||||
}
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class IntLiteralCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public IntLiteralCreator() {
|
||||
_cg = new ClassGen("bcelifier.IntLiteral", "java.lang.Object", "IntLiteral.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.IntLiteral", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, new ObjectType("java.lang.Integer"), Type.NO_ARGS, new String[] { }, "methode", "bcelifier.IntLiteral", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(new PUSH(_cp, 50000));
|
||||
il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Constants.INVOKESTATIC));
|
||||
InstructionHandle ih_5 = il.append(_factory.createReturn(Type.OBJECT));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.IntLiteralCreator creator = new bcelifier.IntLiteralCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.IntLiteral.class"));
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.OpenOption;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import org.apache.commons.bcel6.classfile.ClassFormatException;
|
||||
import org.apache.commons.bcel6.classfile.ClassParser;
|
||||
import org.apache.commons.bcel6.classfile.JavaClass;
|
||||
import org.apache.commons.bcel6.util.BCELifier;
|
||||
|
||||
public class JavaToBCEL {
|
||||
|
||||
public final static String rootDirectory = System.getProperty("user.dir")+"/BCEL/bcelifier/";
|
||||
|
||||
public static void main(String args[]){
|
||||
new JavaToBCEL();
|
||||
}
|
||||
|
||||
public JavaToBCEL(){
|
||||
try {
|
||||
//new BCELifier(new ClassParser(rootDirectory+"Lambda1.class").parse(), new FileOutputStream(new File(rootDirectory+"Lambda1Creator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"This.class").parse(), new FileOutputStream(new File(rootDirectory+"ThisCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"IntLiteral.class").parse(), new FileOutputStream(new File(rootDirectory+"IntLiteralCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"MethodCall.class").parse(), new FileOutputStream(new File(rootDirectory+"MethodCallCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"FieldDeclaration.class").parse(), new FileOutputStream(new File(rootDirectory+"FieldDeclarationCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"Null.class").parse(), new FileOutputStream(new File(rootDirectory+"NullCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"LocalVarAccess.class").parse(), new FileOutputStream(new File(rootDirectory+"LocalVarAccessCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"Wildcard.class").parse(), new FileOutputStream(new File(rootDirectory+"WildcardCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"BooleanValue.class").parse(), new FileOutputStream(new File(rootDirectory+"BooleanValueCreator.java"))).start();
|
||||
//new BCELifier(new ClassParser(rootDirectory+"NewClass.class").parse(), new FileOutputStream(new File(rootDirectory+"NewClassCreator.java"))).start();
|
||||
new BCELifier(new ClassParser(rootDirectory+"IfStatement.class").parse(), new FileOutputStream(new File(rootDirectory+"IfStatementCreator.java"))).start();
|
||||
} catch (ClassFormatException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class Lambda1 {
|
||||
|
||||
Runnable methode(){
|
||||
return ()->System.out.println(this);
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class LocalVarAccess {
|
||||
Integer methode(Integer i){
|
||||
Integer var;
|
||||
var = 10 + i;
|
||||
return var;
|
||||
}
|
||||
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class LocalVarAccessCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public LocalVarAccessCreator() {
|
||||
_cg = new ClassGen("bcelifier.LocalVarAccess", "java.lang.Object", "LocalVarAccess.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.LocalVarAccess", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, new ObjectType("java.lang.Integer"), new Type[] { new ObjectType("java.lang.Integer") }, new String[] { "arg0" }, "methode", "bcelifier.LocalVarAccess", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(new PUSH(_cp, 10));
|
||||
il.append(_factory.createLoad(Type.OBJECT, 1));
|
||||
il.append(_factory.createInvoke("java.lang.Integer", "intValue", Type.INT, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
|
||||
il.append(InstructionConstants.IADD);
|
||||
il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Constants.INVOKESTATIC));
|
||||
il.append(_factory.createStore(Type.OBJECT, 2));
|
||||
InstructionHandle ih_11 = il.append(_factory.createLoad(Type.OBJECT, 2));
|
||||
InstructionHandle ih_12 = il.append(_factory.createReturn(Type.OBJECT));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.LocalVarAccessCreator creator = new bcelifier.LocalVarAccessCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.LocalVarAccess.class"));
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class MethodCall {
|
||||
void methode(){
|
||||
}
|
||||
|
||||
void methode2(Runnable r){
|
||||
methode();
|
||||
r.run();
|
||||
}
|
||||
}
|
||||
|
@ -1,70 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class MethodCallCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public MethodCallCreator() {
|
||||
_cg = new ClassGen("bcelifier.MethodCall", "java.lang.Object", "MethodCall.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
createMethod_2();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.MethodCall", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, Type.VOID, Type.NO_ARGS, new String[] { }, "methode", "bcelifier.MethodCall", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_2() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, Type.VOID, new Type[] { new ObjectType("java.lang.Runnable") }, new String[] { "arg0" }, "methode2", "bcelifier.MethodCall", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("bcelifier.MethodCall", "methode", Type.VOID, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createLoad(Type.OBJECT, 1));
|
||||
il.append(_factory.createInvoke("java.lang.Runnable", "run", Type.VOID, Type.NO_ARGS, Constants.INVOKEINTERFACE));
|
||||
InstructionHandle ih_10 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.MethodCallCreator creator = new bcelifier.MethodCallCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.MethodCall.class"));
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
|
||||
public class NewClass {
|
||||
public NewClass(Integer i){}
|
||||
void methode2(){
|
||||
new NewClass(1);
|
||||
}
|
||||
}
|
||||
|
@ -1,60 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class NewClassCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public NewClassCreator() {
|
||||
_cg = new ClassGen("bcelifier.NewClass", "java.lang.Object", "NewClass.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, new Type[] { new ObjectType("java.lang.Integer") }, new String[] { "arg0" }, "<init>", "bcelifier.NewClass", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, Type.VOID, Type.NO_ARGS, new String[] { }, "methode2", "bcelifier.NewClass", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createNew("bcelifier.NewClass"));
|
||||
il.append(InstructionConstants.DUP);
|
||||
il.append(new PUSH(_cp, 1));
|
||||
il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Constants.INVOKESTATIC));
|
||||
il.append(_factory.createInvoke("bcelifier.NewClass", "<init>", Type.VOID, new Type[] { new ObjectType("java.lang.Integer") }, Constants.INVOKESPECIAL));
|
||||
il.append(InstructionConstants.POP);
|
||||
InstructionHandle ih_12 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.NewClassCreator creator = new bcelifier.NewClassCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.NewClass.class"));
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class Null {
|
||||
|
||||
Integer i = null;
|
||||
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class NullCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public NullCreator() {
|
||||
_cg = new ClassGen("bcelifier.Null", "java.lang.Object", "Null.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createFields();
|
||||
createMethod_0();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createFields() {
|
||||
FieldGen field;
|
||||
|
||||
field = new FieldGen(0, new ObjectType("java.lang.Integer"), "i", _cp);
|
||||
_cg.addField(field.getField());
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.Null", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(InstructionConstants.ACONST_NULL);
|
||||
il.append(_factory.createFieldAccess("bcelifier.Null", "i", new ObjectType("java.lang.Integer"), Constants.PUTFIELD));
|
||||
InstructionHandle ih_9 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.NullCreator creator = new bcelifier.NullCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.Null.class"));
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class This {
|
||||
|
||||
This methode(){
|
||||
return this;
|
||||
}
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class ThisCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public ThisCreator() {
|
||||
_cg = new ClassGen("bcelifier.This", "java.lang.Object", "This.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createMethod_0();
|
||||
createMethod_1();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.This", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
private void createMethod_1() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(0, new ObjectType("bcelifier.This"), Type.NO_ARGS, new String[] { }, "methode", "bcelifier.This", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
InstructionHandle ih_1 = il.append(_factory.createReturn(Type.OBJECT));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.ThisCreator creator = new bcelifier.ThisCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.This.class"));
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
public class Wildcard<A> {
|
||||
Wildcard<? super String> a;
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
package bcelifier;
|
||||
|
||||
import org.apache.commons.bcel6.generic.*;
|
||||
import org.apache.commons.bcel6.classfile.*;
|
||||
import org.apache.commons.bcel6.*;
|
||||
import java.io.*;
|
||||
|
||||
public class WildcardCreator implements Constants {
|
||||
private InstructionFactory _factory;
|
||||
private ConstantPoolGen _cp;
|
||||
private ClassGen _cg;
|
||||
|
||||
public WildcardCreator() {
|
||||
_cg = new ClassGen("bcelifier.Wildcard", "java.lang.Object", "Wildcard.java", ACC_PUBLIC | ACC_SUPER, new String[] { });
|
||||
|
||||
_cp = _cg.getConstantPool();
|
||||
_factory = new InstructionFactory(_cg, _cp);
|
||||
}
|
||||
|
||||
public void create(OutputStream out) throws IOException {
|
||||
createFields();
|
||||
createMethod_0();
|
||||
_cg.getJavaClass().dump(out);
|
||||
}
|
||||
|
||||
private void createFields() {
|
||||
FieldGen field;
|
||||
|
||||
field = new FieldGen(0, new ObjectType("bcelifier.Wildcard"), "a", _cp);
|
||||
_cg.addField(field.getField());
|
||||
}
|
||||
|
||||
private void createMethod_0() {
|
||||
InstructionList il = new InstructionList();
|
||||
MethodGen method = new MethodGen(ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] { }, "<init>", "bcelifier.Wildcard", il, _cp);
|
||||
|
||||
InstructionHandle ih_0 = il.append(_factory.createLoad(Type.OBJECT, 0));
|
||||
il.append(_factory.createInvoke("java.lang.Object", "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
|
||||
InstructionHandle ih_4 = il.append(_factory.createReturn(Type.VOID));
|
||||
method.setMaxStack();
|
||||
method.setMaxLocals();
|
||||
_cg.addMethod(method.getMethod());
|
||||
il.dispose();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
bcelifier.WildcardCreator creator = new bcelifier.WildcardCreator();
|
||||
creator.create(new FileOutputStream("bcelifier.Wildcard.class"));
|
||||
}
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
\begin{thebibliography}{CMP00}
|
||||
|
||||
\bibitem[B{\"a}u05]{JB05}
|
||||
J{\"o}rg B{\"a}uerle.
|
||||
\newblock {\em Typinferenz in \textsf{Java}}.
|
||||
\newblock Studienarbeit, BA Stuttgart/Horb, 2005.
|
||||
\newblock (in german).
|
||||
|
||||
\bibitem[CMP00]{CMP2000}
|
||||
Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano.
|
||||
\newblock {\em D\'eveloppement d'applications avec Objective Caml}.
|
||||
\newblock O'Reilly, avril 2000.
|
||||
\newblock in french, translation http://caml.inria.fr/oreilly-book.
|
||||
|
||||
\bibitem[Lit98]{VL98}
|
||||
Vassily Litvinov.
|
||||
\newblock Constraint-based polymorphism in {Cecil}: Towards a practical and
|
||||
static type system.
|
||||
\newblock In {\em {OOPSLA} '98 Conference Proceedings}, volume 33(10), pages
|
||||
388--411, 1998.
|
||||
|
||||
\bibitem[Mel05]{MM05}
|
||||
Markus Melzer.
|
||||
\newblock {\em Integration der \textsf{Java}--Typeinferenz in eine
|
||||
Programmierumgebung}.
|
||||
\newblock Studienarbeit, BA Stuttgart/Horb, 2005.
|
||||
\newblock Studienarbeit (in german).
|
||||
|
||||
\bibitem[Ode02]{MO02}
|
||||
Martin Odersky.
|
||||
\newblock Inferred type instantiation for {GJ}.
|
||||
\newblock Note sent to the types mailing list, January 2002.
|
||||
|
||||
\bibitem[Ott04]{TO04}
|
||||
Thomas Ott.
|
||||
\newblock {\em Typinferenz in \textsf{Java}}.
|
||||
\newblock Studienarbeit, BA Stuttgart/Horb, 2004.
|
||||
\newblock (in german).
|
||||
|
||||
\bibitem[OZZ01]{OZZ01}
|
||||
Martin Odersky, Christoph Zenger, and Matthias Zenger.
|
||||
\newblock Colored local type inference.
|
||||
\newblock {\em ACM SIG{\-}PLAN Notices}, 36(3):41--53, 2001.
|
||||
|
||||
\bibitem[PC94]{PC94}
|
||||
John Plevyak and Andrew~A. Chien.
|
||||
\newblock Precise concrete type inference for object-oriented languages.
|
||||
\newblock In {\em Proceedings of the ninth annual conference on Object-oriented
|
||||
programming systems, language, and applications}, pages 324--340. ACM Press,
|
||||
1994.
|
||||
|
||||
\bibitem[Pl{\"u}04]{Plue04_1}
|
||||
Martin Pl{\"u}micke.
|
||||
\newblock Type unification in \textsf{Generic--Java}.
|
||||
\newblock In Michael Kohlhase, editor, {\em Proceedings of 18th {I}nternational
|
||||
{W}orkshop on {U}nification ({U}{N}{I}{F}'04)}, July 2004.
|
||||
\newblock {\tt http://www.faculty.iu-bremen.de/mkohlhase/event/unif04}.
|
||||
|
||||
\bibitem[PS91]{PS91}
|
||||
Jens Palsberg and Michael~I. Schwartzbach.
|
||||
\newblock Object-oriented type inference.
|
||||
\newblock {\em Proceedings of OOPSLA'91, ACM SIGPLAN Sixth Annual Conference on
|
||||
Object-Oriented Programming Systems, Languages and Applications}, pages
|
||||
146--161, October 1991.
|
||||
|
||||
\bibitem[PS94]{PS94}
|
||||
Jens Palsberg and Michael~I. Schwartzbach.
|
||||
\newblock {\em Object-oriented type systems}.
|
||||
\newblock John Wiley \& Sons, 1994.
|
||||
|
||||
\bibitem[PT00]{PT00}
|
||||
Benjamin~C. Pierce and David~N. Turner.
|
||||
\newblock Local type inference.
|
||||
\newblock {\em ACM Trans. Program. Lang. Syst.}, 22(1):1--44, 2000.
|
||||
|
||||
\end{thebibliography}
|
@ -1,140 +0,0 @@
|
||||
\documentclass[11pt]{article}
|
||||
\setlength{\unitlength}{1 true cm}
|
||||
\setlength{\oddsidemargin}{0 true mm}
|
||||
\setlength{\evensidemargin}{\oddsidemargin}
|
||||
\setlength{\textwidth}{160 true mm}
|
||||
\setlength{\parindent}{5 true mm}
|
||||
\setlength{\topmargin}{1 true mm}
|
||||
\setlength{\headheight}{12 true pt}
|
||||
\setlength{\headsep}{20 true pt}
|
||||
\setlength{\textheight}{240 true mm}
|
||||
\setlength{\footskip}{15 true mm}
|
||||
\setlength{\voffset}{-10 true mm}
|
||||
%\setlength{\footheight}{5 true mm}
|
||||
|
||||
\usepackage{prolog}
|
||||
|
||||
\title{Type--Inference in \javafive}
|
||||
\author{J\"org B\"auerle, Markus Melzer, Martin Pl\"umicke\medskip\\
|
||||
\small
|
||||
University of Cooperative Education Stuttgart\\
|
||||
%Department of Information Technology\\
|
||||
%Florianstra{\ss}e 15\\
|
||||
%D--72160 Horb\\
|
||||
%tel. +49-7451-521142\\
|
||||
%fax. +49-7451-521190\\
|
||||
\small m.pluemicke@ba-horb.de
|
||||
}
|
||||
|
||||
|
||||
\begin{document}
|
||||
\bibliographystyle{alpha}
|
||||
\maketitle
|
||||
\section{Overview}
|
||||
We have developed for \javafive a type inference system. This means that the
|
||||
user can write programs without any type annotations and the system determines
|
||||
the correct types. We have implemented a prototype for this
|
||||
system. Furthermore we have implemented a plugin for the integrated development
|
||||
environment \eclipse.
|
||||
|
||||
\section{The Type Inference Algorithm}
|
||||
Since then type inference in \oldjava similar languages is known as the
|
||||
automatic parameter instantiation in polymorphic methods (local type inference)
|
||||
\cite{PT00,OZZ01,MO02}. It is proved that this type inference is
|
||||
unsound. Some techniques are presented, which solve these unsoundness.
|
||||
|
||||
We extend these approaches to a global variant, where additionally
|
||||
the types of method parameters, methods' return types and the
|
||||
types of local variables are determined automatically. The input of the algorithm
|
||||
are only the types of the fields of the respective classes.
|
||||
|
||||
The type inference algorithm traverses the programming code as an abstract syntax
|
||||
tree and forms sets of type inequations. As it is known that even the local
|
||||
type inference is unsound, it is obvious that our approach is also unsound. We
|
||||
deal with this problem, as we allow different type assumptions for the
|
||||
parameters, the return type, the local variables, and the expressions of each
|
||||
method, respectively. During traversing the set of type assumptions is adapted, such
|
||||
that the set contains exactly the assumptions, which are possible assumptions at
|
||||
the respective position during the traverse. The adaption is done by solving the
|
||||
inequations as far as possible by a type unification algorithm
|
||||
\cite{Plue04_1}. The type unification is not unitary but finitary. This means
|
||||
that each unification step reduces the set of type assumptions if there is no
|
||||
solution for one set of inequations. On the other hand the set of type assumptions is extended, if
|
||||
there is more than one solution for a set of inequations.
|
||||
|
||||
The result of the type inference algorithm is the set of all correct
|
||||
combinations of types of the parameters, the return type, and the local
|
||||
variables.
|
||||
|
||||
After the type inference step during the compilation, there are two possibilities. Either for each
|
||||
combination of types of each method, byte code could be built,
|
||||
respectively. This would lead to the property that method names, which are
|
||||
declared only once, could be overloaded.
|
||||
On the other hand one combination could
|
||||
be selected. Then, for this combination of types byte code would be built. We
|
||||
implemented the second possibility (cp. section \ref{sec:IDE}).
|
||||
|
||||
Furthermore, we have done comparisons to other type inference
|
||||
approaches. We considered the
|
||||
type system of \textsf{Cecil} \cite{VL98}, which is a static type system
|
||||
providing type checking and local type inference. Furthermore we considered a
|
||||
type system for a language oriented at \textsf{Smalltalk} \cite{PS91,
|
||||
PS94}. In this approach the types are computed by a least fixed point derivation.
|
||||
In \cite{PC94} type inference for the language \textsf{Concurrent Aggregates} is
|
||||
described, which contains a data flow analysis. Finally, we considered the type
|
||||
system of \textsf{ocaml} \cite{CMP2000}. The approach of this type system
|
||||
differs from our's, as \textsf{ocaml} allows higher-order functions.
|
||||
|
||||
\section{Implementation}
|
||||
We have done the implementation in \oldjava. The implementation consists of two
|
||||
parts. First we describe the implementation of the type unification
|
||||
algorithm. Then we present the implementation of the actual type inference via
|
||||
code traverse.
|
||||
|
||||
\subsection{Type Unification}
|
||||
The implementation of the type unification \cite{TO04} contains as the main
|
||||
datastructure a Menge of type term pairs. The algorithm itself is
|
||||
implemented as an extension of the usual unification algorithm. Pairs of
|
||||
the form $a \olsub ty$ respectively $ty \olsub a$, where $a$ is a variable and
|
||||
$ty$ is a term but no variable, generate multiple solutions.
|
||||
|
||||
\subsection{Type Inference}
|
||||
The idea of the implementation of the actual type inference algorithm
|
||||
\cite{JB05} is that each construct in a \javafive program (method, parameter,
|
||||
return type, variable,
|
||||
expression) get first a variable as its type assumption. Then, for each variable a
|
||||
type is determined by the algorithm.
|
||||
|
||||
There are two main datastructures.
|
||||
The first one represents type assumptions for methods, fields, and
|
||||
variables. During runtime a set of instances of this
|
||||
datastructure represent the different possibilities of type assumptions. The
|
||||
second main datastructure represents the substitutions of the variables to types,
|
||||
calculated step by step.
|
||||
|
||||
During runtime each construct of the abstract syntax tree is registered
|
||||
as a listener by the corresponding type variable. These registrations finally allow
|
||||
to substitute the variables in the abstract syntax tree by the
|
||||
calculated types.
|
||||
|
||||
\section{Integrated Development Environment (IDE)}
|
||||
\label{sec:IDE}
|
||||
For \javafive without explicite type declaration a plugin for \eclipse is
|
||||
developed \cite{MM05}. The IDE allows to show all different correct
|
||||
possibilities to give types to the methods, parameters, return types, and local
|
||||
variables, which are determined by the type inference algorithm. Then, the user
|
||||
can select the favored type for each construct step by step. Finally, the
|
||||
selected types are substituted in the respective constructs of the abstract syntax
|
||||
tree.
|
||||
|
||||
\section{Summary and Outlook}
|
||||
We have developed a system, which allows to give typeless \javafive
|
||||
programs. The system calculates the correct types. The soundness problem is
|
||||
solved such that all different possibilities are determined and the user
|
||||
himself decides, which type should be used.
|
||||
|
||||
In the moment only a subset of \javafive is implemented. Interfaces and
|
||||
F--bounded type parameters are not implemented yet. This should be done
|
||||
henceforth.
|
||||
\bibliography{martin,SE}
|
||||
\end{document}
|
@ -1,708 +0,0 @@
|
||||
\usepackage{float}
|
||||
\usepackage{color}
|
||||
\usepackage{xspace_spezial}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{alltt}
|
||||
\usepackage{fancybox}
|
||||
\usepackage{stmaryrd}
|
||||
\usepackage{verbatim}
|
||||
\usepackage{epsfig}
|
||||
\usepackage{multicol}
|
||||
\newlength{\textwid}
|
||||
\setlength{\textwid}{\textwidth}
|
||||
\addtolength{\textwid}{-4ex}
|
||||
\newlength{\textfighei}
|
||||
\setlength{\textfighei}{\textheight}
|
||||
\addtolength{\textfighei}{-10ex}
|
||||
\DeclareSymbolFont{blackboard}{OT1}{bbm}{m}{sl}
|
||||
\DeclareMathSymbol{\IR}{0}{blackboard}{"52}
|
||||
\DeclareMathSymbol{\IN}{0}{blackboard}{"4E}
|
||||
\DeclareMathSymbol{\IF}{0}{blackboard}{"46}
|
||||
\DeclareMathSymbol{\IP}{0}{blackboard}{"50}
|
||||
\DeclareMathSymbol{\IK}{0}{blackboard}{"4D}
|
||||
\DeclareMathSymbol{\IZ}{0}{blackboard}{"5A}
|
||||
\DeclareMathSymbol{\IQ}{0}{blackboard}{"51}
|
||||
\DeclareMathSymbol{\IC}{0}{blackboard}{"43}
|
||||
\parindent 0mm
|
||||
\renewcommand{\unlhd}{<}
|
||||
%\renewcommand{\lhd}{<\!\!|}
|
||||
%\renewcommand{\rhd}{|\!\!>}
|
||||
\definecolor{blue}{rgb}{0,0,1}
|
||||
\definecolor{red}{rgb}{1,0,0}
|
||||
\definecolor{green}{rgb}{0,1,0.3}
|
||||
\definecolor{bluered}{rgb}{1,0,1}
|
||||
\definecolor{bluegreen}{rgb}{1,0.3,0}
|
||||
\newcommand{\red}[1]{\textcolor{red}{#1}}
|
||||
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
|
||||
\newcommand{\green}[1]{\textcolor{green}{#1}}
|
||||
\newcommand{\bluered}[1]{\textcolor{bluered}{#1}}
|
||||
\newcommand{\bluegreen}[1]{\textcolor{bluegreen}{#1}}
|
||||
\reversemarginpar
|
||||
\newcommand{\commentary}[1]{\marginpar[\tiny #1]{\tiny #1}}
|
||||
%\newcommand{\commentaryforKlaeren}[1]{\marginpar[\tiny #1]{\tiny #1}}
|
||||
%\newcommand{\commentary}[1]{}
|
||||
\newcommand{\commentaryforKlaeren}[1]{}
|
||||
%
|
||||
% figure - Einstellungen
|
||||
%
|
||||
\def\textfraction{0}
|
||||
\def\topfraction{1.5}
|
||||
\def\bottomfraction{1}
|
||||
\def\floatpagefraction{1.0}
|
||||
%\def\dbltopfraction{1}
|
||||
%\def\dblfloatpagefraction{1.0}
|
||||
\newcommand{\indexentry}[2]{\item[] #1 \dotfill #2\qquad\qquad\vspace{-0.8em}}
|
||||
\newcommand{\sub}{\textrm{\,$\sqsubseteq$\,}\xspace}
|
||||
\newcommand{\nsub}{\text{\,$\not\sqsubseteq$\,}\xspace}
|
||||
\newcommand{\ecap}{\mbox{$\,\sqcap\,$}}
|
||||
\newcommand{\ecup}{\mbox{$\,\sqcup\,$}}
|
||||
\newcommand{\pre}{\mbox{$\,\preceq\,$}}
|
||||
\newcommand{\botam}{{\{\, \bot,\ \amalg \,\}}\xspace}
|
||||
|
||||
%
|
||||
% Substitutions
|
||||
%
|
||||
\newcommand{\subst}{\textrm{$\expbf{subst}{\normaltset}$}}
|
||||
|
||||
%
|
||||
% Signaturen
|
||||
%
|
||||
\def\einf#1#2{\mbox{$(#1,~#2)$}\xspace}
|
||||
\newcommand{\sig}{\einf{\normalbtermset}{\Theta}}
|
||||
\newcommand{\typesig}{\einf{BTV}{TC}\xspace}
|
||||
\newcommand{\einsig}{\einf{\normaltermset}{F}\xspace}
|
||||
\newcommand{\msig}{\einsig}
|
||||
\newcommand{\mssig}{\einf{\equivtermset}{F_{ms}}\xspace}
|
||||
\newcommand{\ossig}{\einf{\normaltset, \sub}{F_{os}}\xspace}
|
||||
\def\einfm#1#2{\langle #1,\ #2 \rangle}
|
||||
%\def\pos#1#2{\einf{#1,\ \sqsubseteq}{#2}}
|
||||
\def\pos#1#2#3{\einf{#1,\ #2}{#3}}
|
||||
\def\posm#1#2{\pos{#1}{#2}}
|
||||
\def\posSO#1{\pos{#1}{F}}
|
||||
\def\posSIG#1{\pos{S}{#1}}
|
||||
\newcommand{\posig}{\pos{\normaltset}{\olsub}{\Sigma}}
|
||||
\newcommand{\posigM}{\pos{\normaltset}{\olsub}{M}}
|
||||
%\newcommand{\posig}{\pos{S}{\Sigma}}
|
||||
\newcommand{\overposig}{\pos{\overline{S}}{\overline{\Sigma}}}
|
||||
\def\fsf#1#2#3{\mbox{$#1^{(#2,#3)}$}\xspace}
|
||||
\def\Sigmaa#1#2{\fsf{F}{#1}{#2}\xspace}
|
||||
\newcommand{\Sigmaws}{\Sigmaa{w}{s}}
|
||||
\newcommand{\Sigmawt}{\Sigmaa{w}{\theta}}
|
||||
\def\set#1{\{\,#1 \,\}}
|
||||
\newcommand{\termset}[3]{\textrm{$\exp{#1_{#2}}{#3}$}\xspace}
|
||||
\newcommand{\normaltset}{\termset{T}{\Theta}{TV}}
|
||||
\newcommand{\normaltermset}{\termset{T}{\Theta}{TV}}
|
||||
\newcommand{\normalbtermset}{\termset{T}{TC}{BTV}}
|
||||
\newcommand{\equivtermset}{\textrm{$\exp{T_{\Theta_{\sim}}}{TV}$}\xspace}
|
||||
\newcommand{\equiva}[1]{[#1]_{\sim}}
|
||||
\newcommand{\popoSIG}[1]{\einf{\normaltset,~\sqsubseteq}{#1}}
|
||||
\newcommand{\poposig}{\popoSIG{F}}
|
||||
%\newcommand{\poss}{polymorphically order-sorted signature\xspace}
|
||||
%\newcommand{\posa}{polymorphically order-sorted algebra\xspace}
|
||||
\newcommand{\polyosalg}{\textrm{\rm \textbf{PolyOSAlg}$_{\SigO}$}}
|
||||
\newcommand{\polyalg}{\textrm{\rm \textbf{PolyAlg}$_{\SigM}$}}
|
||||
\newcommand{\SigO}{\textrm{$\Sigma_{\textit{os}}$}\xspace}
|
||||
\newcommand{\FuO}{\textrm{$F$}\xspace}
|
||||
\newcommand{\SigM}{\textrm{$\Sigma_{\textit{ms}}$}\xspace}
|
||||
\newcommand{\FuM}{\textrm{$F$}\xspace}
|
||||
\newcommand{\Sig}{\textrm{$\Sigma$}\xspace}
|
||||
\newcommand{\SigE}{\textrm{$\Sigma_{\textit{ext}}$}\xspace}
|
||||
\newcommand{\objprogram}{\textrm{$<\Sig, \, E>$}\xspace}
|
||||
|
||||
%
|
||||
% Algebren
|
||||
%
|
||||
\let\oldsqsubseteq=\sqsubseteq
|
||||
\renewcommand{\sqsubseteq}{\leq}
|
||||
\def\alg#1#2{\textrm{{\rm (}$#1;#2${\rm )}}\xspace}
|
||||
\def\algm#1#2{(#1;#2)}
|
||||
\def\algME#1{\alg{#1}{\alpha}}
|
||||
\def\algABB#1{\alg{A}{#1}}
|
||||
\def\algebra{\alg{A}{\alpha}}
|
||||
\def\termalg{\mbox{$\algm{T_{\text{\rm posig}}}{\iota}$}}
|
||||
\def\termalgm#1{\algm{T_{\text{#1}}}{\iota_{\text{#1}}}}
|
||||
\def\OStermsetvar#1{\textrm{$T_{\SigO}#1$}\xspace}
|
||||
\def\OStermset{\OStermsetvar{(V)}}
|
||||
\def\OStset{\OStermsetvar{}\xspace}
|
||||
\def\OStermsettypevar#1#2{\textrm{$T^{#1}_{\SigO}#2$}\xspace}
|
||||
\def\OStermsettype#1{\OStermsettypevar{#1}{(V)}}
|
||||
\def\ops{\exp{Ops}{A}}
|
||||
\def\exp#1#2{#1(\,#2\,)\xspace}
|
||||
%\def\exptt#1#2{\exp{\text{\tt #1}}{\text{\tt #2}}}
|
||||
\def\exptt#1#2{\exp{\mbox{$\mathtt{#1}$}}{\mbox{$\mathtt{#2}$}}}
|
||||
\def\expsyn#1#2{\exp{\syn{#1}}{\syn{#2}}}
|
||||
\def\expbf#1#2{\exp{\text{\bf #1}}{#2}}
|
||||
\def\expsf#1#2{\exp{\text{\sf #1}}{#2}}
|
||||
\def\exptype#1#2{#1\textrm{{\tt <}}#2\textrm{{\tt >}}\xspace}
|
||||
\def\exptypett#1#2{\mathtt{#1}\textrm{{\tt <}}\mathtt{#2}\textrm{{\tt >}}\xspace}
|
||||
\def\smalltt#1{\texttt{\small #1}}
|
||||
\def\term{\textrm{$\exp{f}{t_1, \ \ldots \ ,t_n}$}\xspace}
|
||||
\def\hverbandm#1#2{\textrm{$(#1,~#2)$}}
|
||||
\def\partord#1#2{\hverbandm{#1}{#2}\xspace}
|
||||
\def\eval#1{eval_{\left<#1\right>}\xspace}
|
||||
\def\evalA{$\eval{\algm{A}{\alpha}}$\xspace}
|
||||
\def\la#1#2{\mbox{$\lambda#1.#2$}\xspace}
|
||||
\def\set#1{\{\, #1 \,\}}
|
||||
|
||||
\newcommand{\inletters}[1]{
|
||||
\ifx\the
|
||||
first
|
||||
\fi}
|
||||
|
||||
%\newcommand{\olsub}{\textrm{$\, \ol{\sqsubseteq} \,$}\xspace}
|
||||
\newcommand{\olsub}{\textrm{$\, \leq^\ast \,$}\xspace}
|
||||
\newcommand{\olsubprime}{\textrm{$\, \ol{\sqsubseteq}' \,$}\xspace}
|
||||
\newcommand{\nolsub}{\textrm{$\, \not\sqsubseteq^* \,$}\xspace}
|
||||
\newcommand{\hverband}{\partord{S}{\sqsubseteq}\xspace}
|
||||
\newcommand{\qverband}{\partord{\exp{\ol{T}_{\Theta}}{V}}{\olsub}}
|
||||
\newcommand{\cloqverband}{\partord{\exp{T_{\Theta}}{V}}{\olsub}}
|
||||
\newcommand{\hord}{\mbox{$(S,~\sqsubseteq)$}\xspace}
|
||||
\def\einschr#1{|_{#1}}
|
||||
%\newcommand{\lsem}{[\hspace*{-0.3ex}[}
|
||||
%\newcommand{\rsem}{]\hspace*{-0.3ex}]}
|
||||
\newcommand{\lsem}{\llbracket\hspace{.5ex}}
|
||||
\newcommand{\rsem}{\hspace{.5ex}\rrbracket}
|
||||
\newcommand{\lsemm}{\lsem}
|
||||
\newcommand{\rsemm}{\rsem}
|
||||
\newcommand{\semantic}[1]{\lsem #1 \rsem\xspace}
|
||||
\newcommand{\ol}[1]{\overline{#1}}
|
||||
\newcommand{\ul}[1]{\underline{#1}}
|
||||
\newcommand{\dps}{\displaystyle}
|
||||
\newcommand{\sema}[3]{{\cal #1}_{#2}\semantic{#3}}
|
||||
\newcommand{\sem}[2]{\sema{#1}{}{#2}\xspace}
|
||||
|
||||
%
|
||||
% Programming languages
|
||||
%
|
||||
|
||||
\newcommand{\haskell}{\textsf{Haskell}\xspace}
|
||||
\newcommand{\gofer}{\textsf{Gofer}\xspace}
|
||||
\newcommand{\objp}{\mbox{\textsf{OBJ--P}}\xspace}
|
||||
\newcommand{\java}{\mbox{\textsf{G--JAVA}}\xspace}
|
||||
\newcommand{\oldjava}{\mbox{\textsf{JAVA}}\xspace}
|
||||
\newcommand{\javafive}{\mbox{\textsf{JAVA 5.0}}\xspace}
|
||||
\newcommand{\eclipse}{\mbox{\textsf{eclipse}}\xspace}
|
||||
\newcommand{\pizza}{\mbox{\textsf{PIZZA}}\xspace}
|
||||
\newcommand{\gj}{\mbox{\textsf{GJ}}\xspace}
|
||||
\newcommand{\sml}{\mbox{\textsf{SML}}\xspace}
|
||||
\newcommand{\ocaml}{\textsf{OCAML}}
|
||||
\newcommand{\obj}{\mbox{\textsf{OBJ--3}}\xspace}
|
||||
\newcommand{\objtwo}{\mbox{\textsf{OBJ--2}}\xspace}
|
||||
|
||||
\def\pot#1{{\cal P}(\, #1 \,)\xspace}
|
||||
\def\partf{\overset{\text{\tiny part}}{\longrightarrow}\xspace}
|
||||
%
|
||||
% Deduktionssystem
|
||||
%
|
||||
\newcommand{\byrule}[1]{\raisebox{1.5ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
||||
\newcommand{\byruleok}[1]{\raisebox{1.5ex}[0ex][0ex]{{{\rm \small #1}}}}
|
||||
\newcommand{\byrulewb}[1]{\raisebox{2.5ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
||||
\newcommand{\byruleokwb}[1]{\raisebox{2.5ex}[0ex][0ex]{{{\rm \small #1}}}}
|
||||
\newcommand{\byrulesli}[1]{\raisebox{3.0ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
||||
\newcommand{\inter}[1]{\bigwedge \hspace{-.55em} \bigwedge_{#1}}
|
||||
|
||||
%
|
||||
% ARRAY WITH ARGUMENTS
|
||||
%
|
||||
\newcommand{\sarray}[2]{\begin{array}[t]{#1} #2 \end{array}}
|
||||
\newcommand{\sarrayt}[2]{\begin{array}[t]{#1} #2 \end{array}}
|
||||
\newcommand{\sarrayb}[2]{\begin{array}[b]{#1} #2 \end{array}}
|
||||
\newcommand{\sarrayo}[2]{\begin{array}{#1} #2 \end{array}}
|
||||
|
||||
%
|
||||
% INFERENCE RULES
|
||||
%
|
||||
\newcommand{\byrulenew}[1]{\raisebox{2.1ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
||||
\newcommand{\postcond}[1]{\raisebox{2.1ex}[0ex][0ex]{#1}}
|
||||
\newcommand{\lef}[1]{\multicolumn{1}{@{}l}{#1}}
|
||||
\newcommand{\ri}[1]{\multicolumn{1}{r@{}}{#1}}
|
||||
\newcommand{\ce}[1]{\multicolumn{1}{@{}c}{#1}}
|
||||
\newcommand{\axiom}[2]{\textrm{[}\textbf{\small #1}\textrm{]} & \lef{#2}}
|
||||
\newcommand{\irule}[4]{& \sarray{c}{#2}\vspace{1ex}\\\cline{2-2}
|
||||
\vspace{-2ex}\\ \byrulenew{#1} & \sarray{c}{#3} & \postcond{$#4$}}
|
||||
\newcommand{\irulealign}[6]{& \sarray{#2}{#3}\vspace{1ex}\\\cline{2-2}
|
||||
\vspace{-2ex}\\ \byrulenew{#1} & \sarray{#4}{#5} & \postcond{$#6$}}
|
||||
\newenvironment{irules}{$\begin{array}{lcl}}{\end{array}$}
|
||||
|
||||
%
|
||||
% Kategorien
|
||||
%
|
||||
\newcommand{\funs}[1]{\mbox{$F^S_{ERR}$(\, #1 \,)}\xspace}
|
||||
\newcommand{\funa}[1]{\mbox{$F^A_{ERR}$(\, #1 \,)}\xspace}
|
||||
\newcommand{\funh}[1]{\mbox{$F^H_{ERR}(\, #1 \,)$}\xspace}
|
||||
|
||||
%
|
||||
% Typherleitungen
|
||||
%
|
||||
%\let\oldrhd=\rhd
|
||||
%\newcommand{\rder}{\hspace*{0.5ex} \rhd_{\textrm{\tiny $\Sig$}} \hspace{0.5ex}}
|
||||
\newcommand{\rder}{\hspace*{0.5ex} \rhd \hspace{0.5ex}}
|
||||
%\newcommand{\lder}{\hspace*{0.5ex} \lhd_{\textrm{\tiny $\Sig$}} \hspace*{0.5ex}}
|
||||
\newcommand{\lder}{\hspace*{0.5ex} \lhd \hspace*{0.5ex}}
|
||||
\newcommand{\rderStmt}{\hspace*{0.5ex} \rhd_{Stmt} \hspace*{0.5ex}}
|
||||
\newcommand{\rderExpr}{\hspace*{0.5ex} \rhd_{Expr} \hspace*{0.5ex}}
|
||||
\newcommand{\rderIdent}{\hspace*{0.5ex} \rhd_{Id} \hspace*{0.5ex}}
|
||||
\let\oldblacktriangleright=\blacktriangleright
|
||||
%\newcommand{\fder}{\hspace*{1ex} \textrm{$\blacktriangleright_{\textsl{\tiny \hspace{-1ex}\Sig}}$}}
|
||||
\newcommand{\fder}{\hspace*{1ex} \textrm{$\blacktriangleright$}}
|
||||
|
||||
\newcommand{\newtheo}[3]{\newtheorem{#1}[defhalbordnung]{#2}
|
||||
\begin{#1} {\rm #3} \label{#1} \end{#1}}
|
||||
\newcommand{\der}[2]{\mbox{$#1 \rhd\ #2$}\xspace}
|
||||
\newcommand{\derl}[2]{#1 \lhd_{\textrm{\tiny $\Sig$}} #2\xspace}
|
||||
\newcommand{\derr}[2]{#1 \rhd_{\textrm{\tiny \hspace{-1ex}$\Sig$}} #2\xspace}
|
||||
\newcommand{\derf}[3]{( \, #1, \, #2 \, ) \fder #3\xspace}
|
||||
|
||||
\newcommand{\deri}[1]{\der{A}{K}{#1}\xspace}
|
||||
\newcommand{\derif}[1]{\derf{A}{K}{D}{#1}\xspace}
|
||||
\newcommand{\arity}[3]{\textrm{$\alpha^{(#1,#2)}_{#3}$}\xspace}
|
||||
\newcommand{\coarity}[2]{\textrm{$\beta^{(#1,#2)}$}\xspace}
|
||||
\newcommand{\sodaprg}{\textrm{$(\,\textsl{csig},\ D\,)$\xspace}}
|
||||
|
||||
%
|
||||
% Typen
|
||||
%
|
||||
\newcommand{\typ}[3]{\textrm{$ #1 \times \ldots \times #2 \rightarrow #3$}\xspace}
|
||||
\newcommand{\syn}[1]{{\rm \texttt{\small #1}}}
|
||||
\newcommand{\sigmatyp}{\typ{\sigma_1}{\sigma_n}{\sigma}\xspace}
|
||||
\newcommand{\sigmadef}{\mbox{$\sigma_1 \times \ldots \times \sigma_n$}\xspace}
|
||||
\newcommand{\tautyp}{\typ{\tau_1}{\tau_n}{\tau}\xspace}
|
||||
\newcommand{\tautypsup}[1]{\typ{\tau^{#1}_1}{\tau^{#1}_n}{\tau^{#1}}\xspace}
|
||||
\newcommand{\taudef}{\mbox{$\tau_1 \times \ldots \times \tau_n$}\xspace}
|
||||
\newcommand{\thetatyp}{\typ{\theta_1}{\theta_n}{\theta_0}\xspace}
|
||||
\newcommand{\type}{\text{$\text{TYPE}(\,S,\ V\,)$}\xspace}
|
||||
\newcommand{\typea}{\text{$\text{TYPE}_T(\,S,\ V\,)$}\xspace}
|
||||
\newcommand{\ptype}{{\rm \expsf{Type}{\normalbtermset}}\xspace}
|
||||
\newcommand{\ptypea}{\text{$\text{TYPE}_T(\,\Theta,\ V\,)$}\xspace}
|
||||
\newcommand{\types}{\text{$\text{TYPE}_s(\,S,\ \Gamma\,)$}\xspace}
|
||||
|
||||
\newcommand{\epsbox}[2]{
|
||||
%\begin{center}
|
||||
\setlength{\fboxsep}{4mm}
|
||||
\fbox{\epsfxsize=#1 \epsfbox{#2}}
|
||||
%\end{center}
|
||||
}
|
||||
|
||||
\newcommand{\epsxybox}[3]{
|
||||
\begin{minipage}[t]{#1}
|
||||
\setlength{\fboxsep}{4mm}
|
||||
\fbox{\epsfysize=#2 \epsfbox{#3}}
|
||||
\end{minipage}}
|
||||
|
||||
\newenvironment{program}{\begin{alltt}\small}
|
||||
{\normalsize\end{alltt}\vspace*{-1em}}
|
||||
\floatstyle{plain}
|
||||
\newfloat{soda}{htp}{lop}
|
||||
\floatname{soda}{SODA-Program}
|
||||
|
||||
%\sodaprog
|
||||
% 1. width
|
||||
% 2. figure
|
||||
% 3. file
|
||||
\newcommand{\sodaprog}[3]{
|
||||
\begin{figure}%[#2]
|
||||
%\begin{center}
|
||||
\begin{Sbox}
|
||||
\begin{minipage}{#1}
|
||||
\small
|
||||
\begin{alltt}
|
||||
\verbatiminput{#3.soda}
|
||||
\end{alltt}
|
||||
\normalsize
|
||||
\end{minipage}
|
||||
\end{Sbox}
|
||||
\setlength{\fboxsep}{2mm}
|
||||
\fbox{\TheSbox}
|
||||
%\end{center}
|
||||
\caption{SODA module \texttt{#3}}
|
||||
\label{fig:#3}
|
||||
\end{figure}
|
||||
}
|
||||
|
||||
%
|
||||
% Theorem
|
||||
%
|
||||
\newcommand{\QED}{\rule{1.1ex}{1.1ex}}
|
||||
%\newenvironment{proof}{\par \bigskip \noindent {\bf Proof:}
|
||||
% }{\mbox{ } \hfill \QED \par \smallskip}
|
||||
%\newenvironment{remark}{\par \bigskip \noindent {\bf Remark}
|
||||
% }{\par \smallskip}
|
||||
%\newtheorem{definition}{Definition}[section]
|
||||
%\newtheorem{example}[definition]{Example}
|
||||
%\newtheorem{theorem}[definition]{Theorem}
|
||||
%\newtheorem{corollary}[definition]{Corollary}
|
||||
%\newtheorem{lemma}[definition]{Lemma}
|
||||
%\newtheorem{algorithm}[definition]{Algorithm}
|
||||
%\newenvironment{abstract}{\small \begin{center} {\bf Abstract}\\[2ex]
|
||||
%\begin{minipage}{0.85\textwidth}}{\end{minipage} \end{center}}
|
||||
\newenvironment{Zusammenfassung}{\small \begin{center} {\bf Zusammenfassung}\\[2ex]
|
||||
\begin{minipage}{0.85\textwidth}}{\end{minipage} \end{center}}
|
||||
\newlength{\level}
|
||||
\newlength{\wid}
|
||||
|
||||
|
||||
%\newcommand{\thelb}{
|
||||
\def\notunlhd{\mathrel{\unlhd\!\!\!\!\!\mid}}
|
||||
\def\In#1#2{#1 \! \in \! #2}
|
||||
\def\Leq#1#2#3{#1 \! \leqslant \! #2 \! \leqslant \! #3}
|
||||
\def\Lequ#1#2#3{#1 \leqslant #2 \leqslant #3}
|
||||
\newcommand{\ma}[1]{\text{``}#1\text{''}\xspace}
|
||||
\newcommand{\ttm}[1]{\mbox{\tt #1}\xspace}
|
||||
\newcommand{\ret}[2]{\ttm{r}^{\ttm{\footnotesize #1}}_{\ttm{\footnotesize #2}}\xspace}
|
||||
\newcommand{\retm}[2]{\ttm{r}^{#1}_{#2}\xspace}
|
||||
\newcommand{\re}[2]{\displaystyle r^{#1}_{#2}\xspace}
|
||||
\newlength{\qwert}
|
||||
%\newcommand{\htext}[1]{\settowidth{\qwert}{#1} \addtolength{\qwert}{-0.65ex} \hspace*{\qwert}}
|
||||
\newcommand{\htext}[1]{\settowidth{\qwert}{#1} \hspace*{\qwert}}
|
||||
\newcommand{\leng}[1]{\settowidth{\qwert}{#1} \qwert}
|
||||
\newcommand{\ldo}{, \ldots , }
|
||||
|
||||
|
||||
%
|
||||
% Algorithmus
|
||||
%
|
||||
\newcommand{\nll}{\newline\hspace*{\level}}
|
||||
\newcommand{\nlevel}{\addtolength{\level}{0.4cm}}
|
||||
\newcommand{\llevel}{\addtolength{\level}{-0.4cm}}
|
||||
\newcommand{\ifc}[1]{\textbf{if} \nlevel #1 \llevel}
|
||||
\newcommand{\elsifc}[1]{\textbf{elsif} \nlevel #1 \llevel}
|
||||
\newcommand{\foreachc}[2]{\textbf{foreach} #1 \nlevel #2 \llevel}
|
||||
\newcommand{\thenc}[1]{\textbf{then} \nlevel #1 \llevel}
|
||||
\newcommand{\ifthenc}[2]{\textbf{if} #1 \textbf{then} \nlevel #2 \llevel}
|
||||
\newcommand{\elsec}[1]{\textbf{else} \nlevel #1 \llevel}
|
||||
\newcommand{\eifc}{\textbf{endif}\\}
|
||||
\newcommand{\casec}[2]{\fbox{\textbf{case} #1}\ \nlevel \nlevel #2 \llevel \llevel}
|
||||
\newcommand{\letc}[2]{\textbf{let} \nlevel \\ #1 = \nlevel #2 \llevel \llevel}
|
||||
\newcommand{\letbf}[1]{\textbf{let} \nlevel \\ #1 \llevel}
|
||||
\newcommand{\inc}[1]{\textbf{in} \nlevel #1 \llevel \nopagebreak\\ \textbf{end}}
|
||||
\newcommand{\lam}[2]{\textbf{fn } #1 \textrm{$\, \Rightarrow \,$} #2}
|
||||
\newcommand{\inputc}[1]{\nll \textbf{Input:} \nlevel #1 \llevel}
|
||||
\newcommand{\outputc}[1]{\nll \textbf{Output:} \nlevel #1 \llevel}
|
||||
%\newcommand{\letforeachc}[3]{\textbf{let-foreach} \nlevel #1:\\ \ul{#2} = \nlevel #3 \llevel \llevel}
|
||||
\newcommand{\letforeachc}[3]{\textbf{let-foreach} \nlevel #1:\\ #2 = \nlevel #3 \llevel \llevel}
|
||||
%\newcommand{\letuc}[2]{\textbf{let} \nlevel \\ \ul{#1} = \nlevel #2 \llevel \llevel}
|
||||
\newcommand{\letuc}[2]{\textbf{let} \nlevel \\ #1 = \nlevel #2 \llevel \llevel}
|
||||
\newcommand{\letoeq}[3]{\textbf{let} \nlevel \\ #1 #2 \nlevel #3 \llevel \llevel}
|
||||
\newcommand{\letoeqol}[3]{\nlevel \\ #1 #2 \nlevel #3 \llevel \llevel}
|
||||
%\newcommand{\letu}[2]{\nlevel\\ \ul{#1} = \nlevel #2 \llevel\llevel}
|
||||
\newcommand{\letu}[2]{\nlevel\\ #1 = \nlevel #2 \llevel\llevel}
|
||||
\newcommand{\letnc}[2]{\nlevel\\ #1 = \nlevel #2 \llevel\llevel}
|
||||
\newcommand{\misc}[1]{\nlevel\\ #1 \llevel}
|
||||
\newcommand{\least}{\textrm{$\top$}\xspace}
|
||||
\newenvironment{algocommands}{
|
||||
\setlength{\level}{2mm}
|
||||
\renewcommand{\\}{\nll}
|
||||
\noindent
|
||||
}{\renewcommand{\\}{\newline}
|
||||
\vspace{1ex}
|
||||
}
|
||||
\newenvironment{algo}{\begin{algorithm} \rm %\mbox{}\\
|
||||
\begin{algocommands}
|
||||
}{\end{algocommands}
|
||||
\end{algorithm}
|
||||
}
|
||||
|
||||
\newenvironment{boxedalgo}{
|
||||
\begin{Sbox}
|
||||
\begin{minipage}{\textwid}
|
||||
\begin{algo}
|
||||
}{\end{algo}
|
||||
\end{minipage}
|
||||
\end{Sbox}
|
||||
\fbox{\TheSbox}
|
||||
}
|
||||
|
||||
\newenvironment{Liste}{\begin{list}{\textbf{--}}{
|
||||
\setlength{\parsep}{0pt plus0.0ex}
|
||||
\setlength{\labelwidth}{2ex}
|
||||
\setlength{\itemsep}{0pt}
|
||||
\setlength{\leftmargin}{\labelsep +\labelwidth}
|
||||
}}{\normalsize \end{list}}
|
||||
|
||||
|
||||
\newcounter{ficall}
|
||||
\setcounter{ficall}{0}
|
||||
\newcommand{\ficall}[1]{\addtocounter{ficall}{1}\subsubsection*{(\theficall) \
|
||||
#1}
|
||||
\setcounter{secall}{0}
|
||||
\setcounter{thicall}{0}
|
||||
\setcounter{focall}{0}
|
||||
\setcounter{fifcall}{0}
|
||||
\setcounter{sixcall}{0}
|
||||
\setcounter{sevcall}{0}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\reficall}[1]{\subsubsection*{(\theficall) \
|
||||
#1}}
|
||||
\newcounter{fifinum}
|
||||
\newcommand{\finumset}{\setcounter{fifinum}{\value{ficall}}}
|
||||
\newcommand{\finum}{\thefifinum}
|
||||
\newcounter{fifinumold}
|
||||
\newcommand{\finumoldset}{
|
||||
\setcounter{fifinumold}{\value{fifinum}}
|
||||
}
|
||||
\newcommand{\finumold}{\thesefinumold}
|
||||
|
||||
\newcounter{secall}
|
||||
\setcounter{secall}{0}
|
||||
\newcounter{sefinum}\newcounter{sesenum}
|
||||
\newcommand{\senumset}{\setcounter{sefinum}{\value{ficall}}\setcounter{sesenum}{\value{secall}}}
|
||||
\newcommand{\secall}[1]{\addtocounter{secall}{1}\subsubsection*{(\theficall.\thesecall) \ #1}
|
||||
\setcounter{thicall}{0}
|
||||
\setcounter{focall}{0}
|
||||
\setcounter{fifcall}{0}
|
||||
\setcounter{sixcall}{0}
|
||||
\setcounter{sevcall}{0}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\resecall}[1]{\subsubsection*{(\theficall.\thesecall) \ #1}}
|
||||
\newcommand{\senum}{\thesefinum.\thesesenum}
|
||||
\newcounter{sefinumold}
|
||||
\newcounter{sesenumold}
|
||||
\newcommand{\senumoldset}{
|
||||
\setcounter{sefinumold}{\value{sefinum}}
|
||||
\setcounter{sesenumold}{\value{sesenum}}
|
||||
}
|
||||
\newcommand{\senumold}{\thesefinumold.\thesesenumold}
|
||||
|
||||
\newcounter{thicall}
|
||||
\setcounter{thicall}{0}
|
||||
\newcounter{thifinum}\newcounter{thisenum}\newcounter{thithinum}
|
||||
\newcommand{\thinumset}{\setcounter{thifinum}{\value{ficall}}\setcounter{thisenum}{\value{secall}}\setcounter{thithinum}{\value{thicall}}}
|
||||
\newcommand{\thicall}[1]{\addtocounter{thicall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall) \ #1}
|
||||
\setcounter{focall}{0}
|
||||
\setcounter{fifcall}{0}
|
||||
\setcounter{sixcall}{0}
|
||||
\setcounter{sevcall}{0}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\rethicall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall) \ #1}}
|
||||
\newcommand{\thinum}{\thethifinum.\thethisenum.\thethithinum}
|
||||
|
||||
\newcounter{focall}
|
||||
\setcounter{focall}{0}
|
||||
\newcounter{fofinum}\newcounter{fosenum}\newcounter{fothinum}\newcounter{fofonum}
|
||||
\newcommand{\focall}[1]{\addtocounter{focall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall) \ #1}
|
||||
\setcounter{fifcall}{0}
|
||||
\setcounter{sixcall}{0}
|
||||
\setcounter{sevcall}{0}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\fonumset}{\setcounter{fofinum}{\value{ficall}}\setcounter{fosenum}{\value{secall}}\setcounter{fothinum}{\value{thicall}}\setcounter{fofonum}{\value{focall}}}
|
||||
\newcommand{\fonum}{\thefofinum.\thefosenum.\thefothinum.\thefofonum}
|
||||
\newcommand{\refocall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall) \ #1}}
|
||||
|
||||
\newcounter{fifcall}
|
||||
\setcounter{fifcall}{0}
|
||||
\newcommand{\fifcall}[1]{\addtocounter{fifcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall) \ #1}
|
||||
\setcounter{sixcall}{0}
|
||||
\setcounter{sevcall}{0}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcounter{fiffinum}\newcounter{fifsenum}\newcounter{fifthinum}\newcounter{fiffonum}\newcounter{fiffifnum}
|
||||
\newcommand{\fifnumset}{\setcounter{fiffinum}{\value{ficall}}\setcounter{fifsenum}{\value{secall}}\setcounter{fifthinum}{\value{thicall}}\setcounter{fiffonum}{\value{focall}}\setcounter{fiffifnum}{\value{fifcall}}}
|
||||
\newcommand{\fifnum}{\thefiffinum.\thefifsenum.\thefifthinum.\thefiffonum.\thefiffifnum}
|
||||
\newcommand{\refifcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall) \ #1}}
|
||||
\newcounter{fiffinumold}
|
||||
\newcounter{fifsenumold}
|
||||
\newcounter{fifthinumold}
|
||||
\newcounter{fiffonumold}
|
||||
\newcounter{fiffifnumold}
|
||||
\newcommand{\fifnumoldset}{
|
||||
\setcounter{fiffinumold}{\value{fiffinum}}
|
||||
\setcounter{fifsenumold}{\value{fifsenum}}
|
||||
\setcounter{fifthinumold}{\value{fifthinum}}
|
||||
\setcounter{fiffonumold}{\value{fiffonum}}
|
||||
\setcounter{fiffifnumold}{\value{fiffifnum}}
|
||||
}
|
||||
\newcommand{\fifnumold}{\thefiffinumold.\thefifsenumold.\thefifthinumold.\thefiffonumold.\thefiffifnumold}
|
||||
|
||||
\newcounter{fiffinumoldold}
|
||||
\newcounter{fifsenumoldold}
|
||||
\newcounter{fifthinumoldold}
|
||||
\newcounter{fiffonumoldold}
|
||||
\newcounter{fiffifnumoldold}
|
||||
\newcommand{\fifnumoldoldset}{
|
||||
\setcounter{fiffinumoldold}{\value{fiffinum}}
|
||||
\setcounter{fifsenumoldold}{\value{fifsenum}}
|
||||
\setcounter{fifthinumoldold}{\value{fifthinum}}
|
||||
\setcounter{fiffonumoldold}{\value{fiffonum}}
|
||||
\setcounter{fiffifnumoldold}{\value{fiffifnum}}
|
||||
}
|
||||
\newcommand{\fifnumoldold}{\thefiffinumoldold.\thefifsenumoldold.\thefifthinumoldold.\thefiffonumoldold.\thefiffifnumoldold}
|
||||
|
||||
\newcounter{sixcall}
|
||||
\setcounter{sixcall}{0}
|
||||
\newcommand{\sixcall}[1]{\addtocounter{sixcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall) \ #1}
|
||||
\setcounter{sevcall}{0}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcounter{sixfinum}
|
||||
\newcounter{sixsenum}
|
||||
\newcounter{sixthinum}
|
||||
\newcounter{sixfonum}
|
||||
\newcounter{sixfifnum}
|
||||
\newcounter{sixsixnum}
|
||||
\newcommand{\sixnumset}{
|
||||
\setcounter{sixfinum}{\value{ficall}}
|
||||
\setcounter{sixsenum}{\value{secall}}
|
||||
\setcounter{sixthinum}{\value{thicall}}
|
||||
\setcounter{sixfonum}{\value{focall}}
|
||||
\setcounter{sixfifnum}{\value{fifcall}}
|
||||
\setcounter{sixsixnum}{\value{sixcall}}
|
||||
}
|
||||
\newcommand{\sixnum}{\thesixfinum.\thesixsenum.\thesixthinum.\thesixfonum.\thesixfifnum.\thesixsixnum}
|
||||
\newcommand{\resixcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall) \ #1}}
|
||||
|
||||
\newcounter{sevcall}
|
||||
\setcounter{sevcall}{0}
|
||||
\newcommand{\sevcall}[1]{\addtocounter{sevcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall) \ #1}
|
||||
\setcounter{eigcall}{0}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcounter{sevfinum}
|
||||
\newcounter{sevsenum}
|
||||
\newcounter{sevthinum}
|
||||
\newcounter{sevfonum}
|
||||
\newcounter{sevfifnum}
|
||||
\newcounter{sevsixnum}
|
||||
\newcounter{sevsevnum}
|
||||
\newcommand{\sevnumset}{
|
||||
\setcounter{sevfinum}{\value{ficall}}
|
||||
\setcounter{sevsenum}{\value{secall}}
|
||||
\setcounter{sevthinum}{\value{thicall}}
|
||||
\setcounter{sevfonum}{\value{focall}}
|
||||
\setcounter{sevfifnum}{\value{fifcall}}
|
||||
\setcounter{sevsixnum}{\value{sixcall}}
|
||||
\setcounter{sevsevnum}{\value{sevcall}}
|
||||
}
|
||||
\newcommand{\sevnum}{\thesevfinum.\thesevsenum.\thesevthinum.\thesevfonum.\thesevfifnum.\thesevsixnum.\thesevsevnum}
|
||||
\newcommand{\resevcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall) \ #1}}
|
||||
|
||||
\newcounter{eigcall}
|
||||
\newcounter{eigfinum}\newcounter{eigsenum}\newcounter{eigthinum}\newcounter{eigfonum}\newcounter{eigfifnum}\newcounter{eigsixnum}\newcounter{eigsevnum}\newcounter{eigeignum}
|
||||
\setcounter{eigcall}{0}
|
||||
\newcommand{\eignumset}{\setcounter{eigfinum}{\value{ficall}}\setcounter{eigsenum}{\value{secall}}\setcounter{eigthinum}{\value{thicall}}\setcounter{eigfonum}{\value{focall}}\setcounter{eigfifnum}{\value{fifcall}}\setcounter{eigsixnum}{\value{sixcall}}\setcounter{eigsevnum}{\value{sevcall}}\setcounter{eigeignum}{\value{eigcall}}}
|
||||
\newcommand{\eignum}{\theeigfinum.\theeigsenum.\theeigthinum.\theeigfonum.\theeigfifnum.\theeigsixnum.\theeigsevnum.\theeigeignum}
|
||||
\newcommand{\eigcall}[1]{\addtocounter{eigcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall) \ #1}
|
||||
\setcounter{nicall}{0}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\reeigcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall) \ #1}}
|
||||
|
||||
\newcounter{nicall}
|
||||
\newcounter{nifinum}\newcounter{nisenum}\newcounter{nithinum}\newcounter{nifonum}\newcounter{nififnum}\newcounter{nisixnum}\newcounter{nisevnum}\newcounter{nieignum}\newcounter{nininum}
|
||||
\setcounter{nicall}{0}
|
||||
\newcommand{\ninumset}{\setcounter{nifinum}{\value{ficall}}\setcounter{nisenum}{\value{secall}}\setcounter{nithinum}{\value{thicall}}\setcounter{nifonum}{\value{focall}}\setcounter{nififnum}{\value{fifcall}}\setcounter{nisixnum}{\value{sixcall}}\setcounter{nisevnum}{\value{sevcall}}\setcounter{nieignum}{\value{eigcall}}\setcounter{nininum}{\value{nicall}}}
|
||||
\newcommand{\ninum}{\thenifinum.\thenisenum.\thenithinum.\thenifonum.\thenififnum.\thenisixnum.\thenisevnum.\thenieignum.\thenininum}
|
||||
\newcommand{\nicall}[1]{\addtocounter{nicall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall)
|
||||
\ #1}
|
||||
\setcounter{tencall}{0}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\renicall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall)
|
||||
\ #1}}
|
||||
\newcounter{nifinumold}
|
||||
\newcounter{nisenumold}
|
||||
\newcounter{nithinumold}
|
||||
\newcounter{nifonumold}
|
||||
\newcounter{nififnumold}
|
||||
\newcounter{nisixnumold}
|
||||
\newcounter{nisevnumold}
|
||||
\newcounter{nieignumold}
|
||||
\newcounter{nininumold}
|
||||
\newcommand{\ninumoldset}{
|
||||
\setcounter{nifinumold}{\value{nifinum}}
|
||||
\setcounter{nisenumold}{\value{nisenum}}
|
||||
\setcounter{nithinumold}{\value{nithinum}}
|
||||
\setcounter{nifonumold}{\value{nifonum}}
|
||||
\setcounter{nififnumold}{\value{nififnum}}
|
||||
\setcounter{nisixnumold}{\value{nisixnum}}
|
||||
\setcounter{nisevnumold}{\value{nisevnum}}
|
||||
\setcounter{nieignumold}{\value{nieignum}}
|
||||
\setcounter{nininumold}{\value{nininum}}
|
||||
}
|
||||
\newcommand{\ninumold}{\thenifinumold.\thenisenumold.\thenithinumold.\thenifonumold.\thenififnumold.\thenisixnumold.\thenisevnumold.\thenieignumold.\thenininumold}
|
||||
|
||||
|
||||
\newcounter{tencall}
|
||||
\setcounter{tencall}{0}
|
||||
\newcommand{\tencall}[1]{\addtocounter{tencall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall)
|
||||
\ #1}
|
||||
\setcounter{elecall}{0}
|
||||
}
|
||||
\newcommand{\retencall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall)
|
||||
\ #1}}
|
||||
\newcounter{tenfinum}
|
||||
\newcounter{tensenum}
|
||||
\newcounter{tenthinum}
|
||||
\newcounter{tenfonum}
|
||||
\newcounter{tenfifnum}
|
||||
\newcounter{tensixnum}
|
||||
\newcounter{tensevnum}
|
||||
\newcounter{teneignum}
|
||||
\newcounter{tenninum}
|
||||
\newcounter{tentennum}
|
||||
\newcommand{\tennumset}{
|
||||
\setcounter{tenfinum}{\value{ficall}}
|
||||
\setcounter{tensenum}{\value{secall}}
|
||||
\setcounter{tenthinum}{\value{thicall}}
|
||||
\setcounter{tenfonum}{\value{focall}}
|
||||
\setcounter{tenfifnum}{\value{fifcall}}
|
||||
\setcounter{tensixnum}{\value{sixcall}}
|
||||
\setcounter{tensevnum}{\value{sevcall}}
|
||||
\setcounter{teneignum}{\value{eigcall}}
|
||||
\setcounter{tenninum}{\value{nicall}}
|
||||
\setcounter{tentennum}{\value{tencall}}}
|
||||
\newcommand{\tennum}{\thetenfinum.\thetensenum.\thetenthinum.\thetenfonum.\thetenfifnum.\thetensixnum.\thetensevnum.\theteneignum.\thetenninum.\thetentennum}
|
||||
|
||||
\newcounter{elecall}
|
||||
\setcounter{elecall}{0}
|
||||
\newcommand{\elecall}[1]{\addtocounter{elecall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall.\theelecall) \ #1}}
|
||||
\newcounter{elefinum}
|
||||
\newcounter{elesenum}
|
||||
\newcounter{elethinum}
|
||||
\newcounter{elefonum}
|
||||
\newcounter{elefifnum}
|
||||
\newcounter{elesixnum}
|
||||
\newcounter{elesevnum}
|
||||
\newcounter{eleeignum}
|
||||
\newcounter{eleninum}
|
||||
\newcounter{eletennum}
|
||||
\newcounter{eleelenum}
|
||||
\newcommand{\elenumset}{
|
||||
\setcounter{elefinum}{\value{ficall}}
|
||||
\setcounter{elesenum}{\value{secall}}
|
||||
\setcounter{elethinum}{\value{thicall}}
|
||||
\setcounter{elefonum}{\value{focall}}
|
||||
\setcounter{elefifnum}{\value{fifcall}}
|
||||
\setcounter{elesixnum}{\value{sixcall}}
|
||||
\setcounter{elesevnum}{\value{sevcall}}
|
||||
\setcounter{eleeignum}{\value{eigcall}}
|
||||
\setcounter{eleninum}{\value{nicall}}
|
||||
\setcounter{eletennum}{\value{tencall}}
|
||||
\setcounter{eleelenum}{\value{elecall}}
|
||||
}
|
||||
\newcommand{\elenum}{\theelefinum.\theelesenum.\theelethinum.\theelefonum.\theelefifnum.\theelesixnum.\theelesevnum.\theeleeignum.\theeleninum.\theeletennum.\theeleelenum}
|
19
README.md
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
|
||||
# plugin site erstellen
|
||||
* die JAvaTXCOmpiler DAtei in ein plugin umwandeln und deployen.
|
||||
* siehe: http://www.vogella.com/tutorials/EclipseJarToPlugin/article.html#convert-jar-files-to-osgi-bundles-with-the-p2-maven-plugin
|
||||
* AUsführung:
|
||||
* mvn deploy #erstellt die JAR-Datei und steckt sie in ein lokales Repo (maven-repository)
|
||||
* mvn p2:site
|
||||
* mvn package # hier wird die ZIP-Filf zum Einbinden in Eclipse erstellt
|
||||
|
||||
# Einbinden in Eclipse
|
||||
* In Eclipse kann die Zip-FIle wie ein Plugin installiert werden
|
||||
* Hier tritt FEhler auf. Reflections-Library kann nicht installiert werden. Möglicherweise wird sie auch nicht gebraucht
|
||||
* Nach dem installieren de.dhbwstuttagrt.JavaTXcompiler zu den DEpendencies des plugins hinzufügen
|
||||
* Anschließend unter "Overview" auf "Updata Classpath" klicken
|
||||
|
||||
# Windows
|
||||
* JAVA_HOME setzen:
|
||||
* export JAVA_HOME=/c/Program\ Files/Java/jdk1.8.0_102/
|
2
TODO.md
@ -1,2 +0,0 @@
|
||||
Nächste Aufgaben:
|
||||
|
BIN
Website/JavaTXExamples.zip
Normal file
88
Website/index.html
Normal file
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title>Java-TX Plugin</title></head>
|
||||
<center>
|
||||
<h1>Java-TX Plugin</h1>
|
||||
</center>
|
||||
<h2>Content</h2>
|
||||
<ul>
|
||||
<li><h4><a href="#introduction">Introduction</a></h4></li>
|
||||
<li><h4><a href="newJavaTXProject/newJavaTXProject.html" >New Java-TX project</a></h4></li>
|
||||
<li><h4><a href=" JavaTXExamples.zip" >Example project</a></h4></li>
|
||||
<li><a href="usePlugin/usePlugin.html" >Using the plugin</a></li>
|
||||
<li><h4><a href="install/install.html" >Installation</a></h4>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<br/>
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
Java-TX (Java Type eXtended) is an extension of Java in which a global type inference algorithm and real function types are added. Since the end of the nineties features from functional program- ming languages have been transferred to Java. Parametric polymorphism extended by wildcards, called generics, were transfered to Java 5.0. Higher-order functions and lambda expression were introduced in Java 8. Java 8 uses functional interfaces as target types of lambda expressions in contrast to real function types as in functional programming languages.
|
||||
The powerful feature type inference from functional programming languages is incorporated into Java, as into other object-oriented
|
||||
languages, i.e. only in a restricted way called local type inference. Local type inference allows certain type annotations to be omitted. For instance, it is often not necessary to specify the type of a variable. Type parameters of classes in the new-statement can be left out. Return types of methods can often also be omitted. Local type inference is at its most pronounced in Scala. In Java 10 an extention of local type inference is introduced, where types of local variables can be replaced by the keyword var and inferred automatically during the compilation. In contrast to global type inference, local type inference allows types of recursive methods and lambda expressions not to be omitted.<br>
|
||||
The Java-TX project contributes to the design of object-oriented languages by developing global type inference algorithms for Java-like languages.
|
||||
|
||||
<h3>First Example</h3>
|
||||
The class <tt>Id</tt> has the method <tt>id</tt>. The type annotations are omitted.
|
||||
<br/>
|
||||
|
||||
<pre> <code class="language-java">
|
||||
class Id {
|
||||
id(x) {
|
||||
return x;
|
||||
}
|
||||
}
|
||||
</code> </pre>
|
||||
The type inference algorithm inferrs the types, such that <tt>Id</tt> can be applied:
|
||||
<pre>
|
||||
new Id().id(1);
|
||||
|
||||
new Id().id("hallo");
|
||||
</pre>
|
||||
|
||||
<h3>More complex example</h3>
|
||||
<pre>
|
||||
import java.lang.Integer;
|
||||
import java.lang.Double;
|
||||
import java.lang.String;
|
||||
|
||||
|
||||
class OL {
|
||||
m(x) { return x + x; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
class OLMain {
|
||||
main(x) {
|
||||
var ol;
|
||||
ol = new OL();
|
||||
return ol.m(x);
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
The type inference mechanism considers only imported types. Therefore <tt>Integer</tt> <tt>Double</tt>, and <tt>String</tt> are imported.
|
||||
<br/>
|
||||
As the operator <tt>+</tt> is overloaded by all numeric types and String the methods <tt>m</tt> in the class <tt>OL</tt> and <tt>main</tt> in the class <tt>OLMain</tt>, respectively, gets all these types. The generated classfile demonstrates this:
|
||||
<pre>
|
||||
> javap OL.class
|
||||
Compiled from "OL.jav"
|
||||
class OL {
|
||||
public OL();
|
||||
public java.lang.Integer m(java.lang.Integer);
|
||||
public java.lang.Double m(java.lang.Double);
|
||||
}
|
||||
|
||||
> javap OLMain.class
|
||||
Compiled from "OLMain.jav"
|
||||
class OLMain {
|
||||
public OLMain();
|
||||
public java.lang.Integer main(java.lang.Integer);
|
||||
public java.lang.Double main(java.lang.Double);
|
||||
}
|
||||
</pre>
|
||||
|
||||
|
||||
<hr>
|
||||
<address></address>
|
||||
<!-- hhmts start -->Last modified: Fri Jun 1 16:43:55 CEST 2018 <!-- hhmts end -->
|
||||
</body> </html>
|
BIN
Website/install/Restart.png
Normal file
After ![]() (image error) Size: 25 KiB |
BIN
Website/install/availableSoftware1.png
Normal file
After ![]() (image error) Size: 80 KiB |
BIN
Website/install/availableSoftware2.png
Normal file
After ![]() (image error) Size: 109 KiB |
40
Website/install/instal.html
Normal file
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title>Install Java-TX Plugin</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Install Java-TX Plugin</h1>
|
||||
<ol>
|
||||
<li>Select "Install New Software ..."<br>
|
||||
<img width= 400 src="newsoftware.png" >
|
||||
|
||||
</li>
|
||||
<li>Add ...<br>
|
||||
<img width=550 src="availableSoftware1.png" >
|
||||
</li>
|
||||
<li>Insert address<br>
|
||||
<img width=550 src="availableSoftware2.png" >
|
||||
</li>
|
||||
<li>Select installation<br>
|
||||
<img width=550 src="selectInstallation.png" >
|
||||
</li>
|
||||
<li>Installation details<br>
|
||||
<img width=550 src="installationDetails.png" >
|
||||
</li>
|
||||
<li>Accept license agreement<br>
|
||||
<img width=550 src="licenseAgreement.png" >
|
||||
</li>
|
||||
<li>Install anyway<br>
|
||||
<img width=450 src="installAnyway.png">
|
||||
</li>
|
||||
<li>Restart<br>
|
||||
<img width=450 src="Restart.png">
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
|
||||
<hr>
|
||||
<address></address>
|
||||
<!-- hhmts start -->Last modified: Fri Jun 1 11:57:15 CEST 2018 <!-- hhmts end -->
|
||||
</body> </html>
|
40
Website/install/install.html
Normal file
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title>Install Java-TX Plugin</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Install Java-TX Plugin</h2>
|
||||
<ol>
|
||||
<li>Select "Install New Software ..."<br>
|
||||
<img width= 400 src="newsoftware.png" >
|
||||
|
||||
</li>
|
||||
<li>Add ...<br>
|
||||
<img width=550 src="availableSoftware1.png" >
|
||||
</li>
|
||||
<li>Insert address<br>
|
||||
<img width=550 src="availableSoftware2.png" >
|
||||
</li>
|
||||
<li>Select installation<br>
|
||||
<img width=550 src="selectInstallation.png" >
|
||||
</li>
|
||||
<li>Installation details<br>
|
||||
<img width=550 src="installationDetails.png" >
|
||||
</li>
|
||||
<li>Accept license agreement<br>
|
||||
<img width=550 src="licenseAgreement.png" >
|
||||
</li>
|
||||
<li>Install anyway<br>
|
||||
<img width=450 src="installAnyway.png">
|
||||
</li>
|
||||
<li>Restart<br>
|
||||
<img width=450 src="Restart.png">
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
|
||||
<hr>
|
||||
<address></address>
|
||||
<!-- hhmts start -->Last modified: Fri Jun 1 12:05:43 CEST 2018 <!-- hhmts end -->
|
||||
</body> </html>
|
BIN
Website/install/installAnyway.png
Normal file
After ![]() (image error) Size: 32 KiB |
BIN
Website/install/installationDetails.png
Normal file
After ![]() (image error) Size: 52 KiB |
BIN
Website/install/licenseAgreement.png
Normal file
After ![]() (image error) Size: 61 KiB |
BIN
Website/install/newsoftware.png
Normal file
After ![]() (image error) Size: 96 KiB |
BIN
Website/install/selectInstallation.png
Normal file
After ![]() (image error) Size: 93 KiB |
BIN
Website/newJavaTXProject/addLibrary2.png
Normal file
After ![]() (image error) Size: 163 KiB |
BIN
Website/newJavaTXProject/buildPath1.png
Normal file
After ![]() (image error) Size: 163 KiB |
BIN
Website/newJavaTXProject/buildPath2.png
Normal file
After ![]() (image error) Size: 88 KiB |
BIN
Website/newJavaTXProject/buildPath3.png
Normal file
After ![]() (image error) Size: 50 KiB |
BIN
Website/newJavaTXProject/buildPath4.png
Normal file
After ![]() (image error) Size: 96 KiB |
BIN
Website/newJavaTXProject/newJavFile.png
Normal file
After ![]() (image error) Size: 102 KiB |
BIN
Website/newJavaTXProject/newJavFolder1.png
Normal file
After ![]() (image error) Size: 100 KiB |
BIN
Website/newJavaTXProject/newJavFolder2.png
Normal file
After ![]() (image error) Size: 76 KiB |
34
Website/newJavaTXProject/newJavaTXProject.html
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title></title>
|
||||
</head>
|
||||
<h2>New Java-TX project in eclipse</h2>
|
||||
<ol>
|
||||
<li>New -> Java Project<br/>
|
||||
<img width= 400 src="newJavaTXProject.png" >
|
||||
</li>
|
||||
<br/>
|
||||
<li>Generate a jav-File folder<br/>
|
||||
<img width= 550 src="newJavFolder1.png" ><br/><br/>
|
||||
<img width= 550 src="newJavFolder2.png" >
|
||||
</li>
|
||||
<br/>
|
||||
<li>Add jav-File folder as library<br/>
|
||||
At the moment no package system is implemented, Therefore the compiled class files are in the jav-File folder. This has to be added as library:<br/>
|
||||
<img width= 550 src="buildPath1.png" ><br/><br/>
|
||||
<img width= 550 src="buildPath2.png" ><br/><br/>
|
||||
<img width= 400 src="buildPath3.png" ><br/><br/>
|
||||
<img width= 550 src="buildPath4.png" ><br/>
|
||||
|
||||
|
||||
</li>
|
||||
</ol>
|
||||
<body>
|
||||
<h1></h1>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
<address></address>
|
||||
<!-- hhmts start -->Last modified: Fri Jun 1 16:50:02 CEST 2018 <!-- hhmts end -->
|
||||
</body> </html>
|
BIN
Website/newJavaTXProject/newJavaTXProject.png
Normal file
After ![]() (image error) Size: 150 KiB |
24
Website/usePlugin/usePlugin.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title>Using the plugin</title>
|
||||
</head>
|
||||
<h2>Using the plugin</h2>
|
||||
<ol>
|
||||
<li>Overview<br/>
|
||||
<img width=800 src="usePlugin1.png" >
|
||||
</li>
|
||||
<br/>
|
||||
<li>Select types<br/>
|
||||
If the method is overloaded the user can select types in the outline the right mouse button:<br/><br/>
|
||||
<img src="usePlugin2.png" ><br/>
|
||||
</li>
|
||||
</ol>
|
||||
<body>
|
||||
<h1></h1>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
<address></address>
|
||||
<!-- hhmts start -->Last modified: Fri Jun 1 16:51:28 CEST 2018 <!-- hhmts end -->
|
||||
</body> </html>
|
BIN
Website/usePlugin/usePlugin1.png
Normal file
After ![]() (image error) Size: 112 KiB |
BIN
Website/usePlugin/usePlugin2.png
Normal file
After ![]() (image error) Size: 33 KiB |
1028
antlr/Java8.g4
@ -1,515 +0,0 @@
|
||||
// Generated from Java8.g4 by ANTLR 4.4
|
||||
import org.antlr.v4.runtime.Lexer;
|
||||
import org.antlr.v4.runtime.CharStream;
|
||||
import org.antlr.v4.runtime.Token;
|
||||
import org.antlr.v4.runtime.TokenStream;
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.atn.*;
|
||||
import org.antlr.v4.runtime.dfa.DFA;
|
||||
import org.antlr.v4.runtime.misc.*;
|
||||
|
||||
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
|
||||
public class Java8Lexer extends Lexer {
|
||||
static { RuntimeMetaData.checkVersion("4.4", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8,
|
||||
CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15,
|
||||
ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23,
|
||||
IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29,
|
||||
NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36,
|
||||
SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42,
|
||||
THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49,
|
||||
WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53,
|
||||
CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58,
|
||||
LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65,
|
||||
ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73,
|
||||
LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82,
|
||||
MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ADD_ASSIGN=89,
|
||||
SUB_ASSIGN=90, MUL_ASSIGN=91, DIV_ASSIGN=92, AND_ASSIGN=93, OR_ASSIGN=94,
|
||||
XOR_ASSIGN=95, MOD_ASSIGN=96, LSHIFT_ASSIGN=97, RSHIFT_ASSIGN=98, URSHIFT_ASSIGN=99,
|
||||
Identifier=100, AT=101, ELLIPSIS=102, WS=103, COMMENT=104, LINE_COMMENT=105;
|
||||
public static String[] modeNames = {
|
||||
"DEFAULT_MODE"
|
||||
};
|
||||
|
||||
public static final String[] tokenNames = {
|
||||
"'\\u0000'", "'\\u0001'", "'\\u0002'", "'\\u0003'", "'\\u0004'", "'\\u0005'",
|
||||
"'\\u0006'", "'\\u0007'", "'\b'", "'\t'", "'\n'", "'\\u000B'", "'\f'",
|
||||
"'\r'", "'\\u000E'", "'\\u000F'", "'\\u0010'", "'\\u0011'", "'\\u0012'",
|
||||
"'\\u0013'", "'\\u0014'", "'\\u0015'", "'\\u0016'", "'\\u0017'", "'\\u0018'",
|
||||
"'\\u0019'", "'\\u001A'", "'\\u001B'", "'\\u001C'", "'\\u001D'", "'\\u001E'",
|
||||
"'\\u001F'", "' '", "'!'", "'\"'", "'#'", "'$'", "'%'", "'&'", "'''",
|
||||
"'('", "')'", "'*'", "'+'", "','", "'-'", "'.'", "'/'", "'0'", "'1'",
|
||||
"'2'", "'3'", "'4'", "'5'", "'6'", "'7'", "'8'", "'9'", "':'", "';'",
|
||||
"'<'", "'='", "'>'", "'?'", "'@'", "'A'", "'B'", "'C'", "'D'", "'E'",
|
||||
"'F'", "'G'", "'H'", "'I'", "'J'", "'K'", "'L'", "'M'", "'N'", "'O'",
|
||||
"'P'", "'Q'", "'R'", "'S'", "'T'", "'U'", "'V'", "'W'", "'X'", "'Y'",
|
||||
"'Z'", "'['", "'\\'", "']'", "'^'", "'_'", "'`'", "'a'", "'b'", "'c'",
|
||||
"'d'", "'e'", "'f'", "'g'", "'h'", "'i'"
|
||||
};
|
||||
public static final String[] ruleNames = {
|
||||
"ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR",
|
||||
"CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM",
|
||||
"EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
|
||||
"IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE",
|
||||
"PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP",
|
||||
"SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT",
|
||||
"TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "DecimalIntegerLiteral",
|
||||
"HexIntegerLiteral", "OctalIntegerLiteral", "BinaryIntegerLiteral", "IntegerTypeSuffix",
|
||||
"DecimalNumeral", "Digits", "Digit", "NonZeroDigit", "DigitOrUnderscore",
|
||||
"Underscores", "HexNumeral", "HexDigits", "HexDigit", "HexDigitOrUnderscore",
|
||||
"OctalNumeral", "OctalDigits", "OctalDigit", "OctalDigitOrUnderscore",
|
||||
"BinaryNumeral", "BinaryDigits", "BinaryDigit", "BinaryDigitOrUnderscore",
|
||||
"FloatingPointLiteral", "DecimalFloatingPointLiteral", "ExponentPart",
|
||||
"ExponentIndicator", "SignedInteger", "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral",
|
||||
"HexSignificand", "BinaryExponent", "BinaryExponentIndicator", "BooleanLiteral",
|
||||
"CharacterLiteral", "SingleCharacter", "StringLiteral", "StringCharacters",
|
||||
"StringCharacter", "EscapeSequence", "OctalEscape", "UnicodeEscape", "ZeroToThree",
|
||||
"NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
|
||||
"SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION",
|
||||
"COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD",
|
||||
"SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN",
|
||||
"SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
|
||||
"MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier",
|
||||
"JavaLetter", "JavaLetterOrDigit", "AT", "ELLIPSIS", "WS", "COMMENT",
|
||||
"LINE_COMMENT"
|
||||
};
|
||||
|
||||
|
||||
public Java8Lexer(CharStream input) {
|
||||
super(input);
|
||||
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "Java8.g4"; }
|
||||
|
||||
@Override
|
||||
public String[] getTokenNames() { return tokenNames; }
|
||||
|
||||
@Override
|
||||
public String[] getRuleNames() { return ruleNames; }
|
||||
|
||||
@Override
|
||||
public String getSerializedATN() { return _serializedATN; }
|
||||
|
||||
@Override
|
||||
public String[] getModeNames() { return modeNames; }
|
||||
|
||||
@Override
|
||||
public ATN getATN() { return _ATN; }
|
||||
|
||||
@Override
|
||||
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
|
||||
switch (ruleIndex) {
|
||||
case 140: return JavaLetter_sempred((RuleContext)_localctx, predIndex);
|
||||
case 141: return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
private boolean JavaLetterOrDigit_sempred(RuleContext _localctx, int predIndex) {
|
||||
switch (predIndex) {
|
||||
case 2: return Character.isJavaIdentifierPart(_input.LA(-1));
|
||||
case 3: return Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
private boolean JavaLetter_sempred(RuleContext _localctx, int predIndex) {
|
||||
switch (predIndex) {
|
||||
case 0: return Character.isJavaIdentifierStart(_input.LA(-1));
|
||||
case 1: return Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2k\u042e\b\1\4\2\t"+
|
||||
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
|
||||
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
|
||||
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
|
||||
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
|
||||
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
|
||||
",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
|
||||
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
|
||||
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
|
||||
"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
|
||||
"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
|
||||
"`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+
|
||||
"k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+
|
||||
"w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080"+
|
||||
"\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085"+
|
||||
"\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089"+
|
||||
"\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e"+
|
||||
"\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092"+
|
||||
"\4\u0093\t\u0093\4\u0094\t\u0094\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3"+
|
||||
"\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5"+
|
||||
"\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3"+
|
||||
"\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13"+
|
||||
"\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r"+
|
||||
"\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3"+
|
||||
"\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3"+
|
||||
"\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3"+
|
||||
"\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\27\3\27\3"+
|
||||
"\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3"+
|
||||
"\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3"+
|
||||
"\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3"+
|
||||
"\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3"+
|
||||
"\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3"+
|
||||
"\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3"+
|
||||
"$\3$\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3"+
|
||||
"\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3"+
|
||||
"+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3"+
|
||||
"-\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3"+
|
||||
"\60\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3"+
|
||||
"\62\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\5\64\u0281\n\64"+
|
||||
"\3\65\3\65\5\65\u0285\n\65\3\66\3\66\5\66\u0289\n\66\3\67\3\67\5\67\u028d"+
|
||||
"\n\67\38\38\58\u0291\n8\39\39\3:\3:\3:\5:\u0298\n:\3:\3:\3:\5:\u029d\n"+
|
||||
":\5:\u029f\n:\3;\3;\7;\u02a3\n;\f;\16;\u02a6\13;\3;\5;\u02a9\n;\3<\3<"+
|
||||
"\5<\u02ad\n<\3=\3=\3>\3>\5>\u02b3\n>\3?\6?\u02b6\n?\r?\16?\u02b7\3@\3"+
|
||||
"@\3@\3@\3A\3A\7A\u02c0\nA\fA\16A\u02c3\13A\3A\5A\u02c6\nA\3B\3B\3C\3C"+
|
||||
"\5C\u02cc\nC\3D\3D\5D\u02d0\nD\3D\3D\3E\3E\7E\u02d6\nE\fE\16E\u02d9\13"+
|
||||
"E\3E\5E\u02dc\nE\3F\3F\3G\3G\5G\u02e2\nG\3H\3H\3H\3H\3I\3I\7I\u02ea\n"+
|
||||
"I\fI\16I\u02ed\13I\3I\5I\u02f0\nI\3J\3J\3K\3K\5K\u02f6\nK\3L\3L\5L\u02fa"+
|
||||
"\nL\3M\3M\3M\5M\u02ff\nM\3M\5M\u0302\nM\3M\5M\u0305\nM\3M\3M\3M\5M\u030a"+
|
||||
"\nM\3M\5M\u030d\nM\3M\3M\3M\5M\u0312\nM\3M\3M\3M\5M\u0317\nM\3N\3N\3N"+
|
||||
"\3O\3O\3P\5P\u031f\nP\3P\3P\3Q\3Q\3R\3R\3S\3S\3S\5S\u032a\nS\3T\3T\5T"+
|
||||
"\u032e\nT\3T\3T\3T\5T\u0333\nT\3T\3T\5T\u0337\nT\3U\3U\3U\3V\3V\3W\3W"+
|
||||
"\3W\3W\3W\3W\3W\3W\3W\5W\u0347\nW\3X\3X\3X\3X\3X\3X\3X\3X\5X\u0351\nX"+
|
||||
"\3Y\3Y\3Z\3Z\5Z\u0357\nZ\3Z\3Z\3[\6[\u035c\n[\r[\16[\u035d\3\\\3\\\5\\"+
|
||||
"\u0362\n\\\3]\3]\3]\3]\5]\u0368\n]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\5"+
|
||||
"^\u0375\n^\3_\3_\3_\3_\3_\3_\3_\3`\3`\3a\3a\3a\3a\3a\3b\3b\3c\3c\3d\3"+
|
||||
"d\3e\3e\3f\3f\3g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3"+
|
||||
"p\3p\3q\3q\3r\3r\3r\3s\3s\3s\3t\3t\3t\3u\3u\3u\3v\3v\3v\3w\3w\3w\3x\3"+
|
||||
"x\3x\3y\3y\3y\3z\3z\3{\3{\3|\3|\3}\3}\3~\3~\3\177\3\177\3\u0080\3\u0080"+
|
||||
"\3\u0081\3\u0081\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083\3\u0083\3\u0084"+
|
||||
"\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085\3\u0086\3\u0086\3\u0086\3\u0087"+
|
||||
"\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u008a"+
|
||||
"\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c"+
|
||||
"\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d\7\u008d\u03f4\n\u008d\f\u008d"+
|
||||
"\16\u008d\u03f7\13\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+
|
||||
"\5\u008e\u03ff\n\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f"+
|
||||
"\5\u008f\u0407\n\u008f\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091"+
|
||||
"\3\u0092\6\u0092\u0410\n\u0092\r\u0092\16\u0092\u0411\3\u0092\3\u0092"+
|
||||
"\3\u0093\3\u0093\3\u0093\3\u0093\7\u0093\u041a\n\u0093\f\u0093\16\u0093"+
|
||||
"\u041d\13\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094"+
|
||||
"\3\u0094\3\u0094\7\u0094\u0428\n\u0094\f\u0094\16\u0094\u042b\13\u0094"+
|
||||
"\3\u0094\3\u0094\3\u041b\2\u0095\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23"+
|
||||
"\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31"+
|
||||
"\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60"+
|
||||
"_\61a\62c\63e\64g\65i\2k\2m\2o\2q\2s\2u\2w\2y\2{\2}\2\177\2\u0081\2\u0083"+
|
||||
"\2\u0085\2\u0087\2\u0089\2\u008b\2\u008d\2\u008f\2\u0091\2\u0093\2\u0095"+
|
||||
"\2\u0097\66\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3\2\u00a5\2\u00a7"+
|
||||
"\2\u00a9\2\u00ab\2\u00ad\67\u00af8\u00b1\2\u00b39\u00b5\2\u00b7\2\u00b9"+
|
||||
"\2\u00bb\2\u00bd\2\u00bf\2\u00c1:\u00c3;\u00c5<\u00c7=\u00c9>\u00cb?\u00cd"+
|
||||
"@\u00cfA\u00d1B\u00d3C\u00d5D\u00d7E\u00d9F\u00dbG\u00ddH\u00dfI\u00e1"+
|
||||
"J\u00e3K\u00e5L\u00e7M\u00e9N\u00ebO\u00edP\u00efQ\u00f1R\u00f3S\u00f5"+
|
||||
"T\u00f7U\u00f9V\u00fbW\u00fdX\u00ffY\u0101Z\u0103[\u0105\\\u0107]\u0109"+
|
||||
"^\u010b_\u010d`\u010fa\u0111b\u0113c\u0115d\u0117e\u0119f\u011b\2\u011d"+
|
||||
"\2\u011fg\u0121h\u0123i\u0125j\u0127k\3\2\30\4\2NNnn\3\2\63;\4\2ZZzz\5"+
|
||||
"\2\62;CHch\3\2\629\4\2DDdd\3\2\62\63\4\2GGgg\4\2--//\6\2FFHHffhh\4\2R"+
|
||||
"Rrr\4\2))^^\4\2$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\6\2&&C\\aac|\4\2\2\u0101"+
|
||||
"\ud802\udc01\3\2\ud802\udc01\3\2\udc02\ue001\7\2&&\62;C\\aac|\5\2\13\f"+
|
||||
"\16\17\"\"\4\2\f\f\17\17\u043c\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t"+
|
||||
"\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2"+
|
||||
"\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2"+
|
||||
"\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2"+
|
||||
"+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2"+
|
||||
"\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2"+
|
||||
"C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3"+
|
||||
"\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2"+
|
||||
"\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2"+
|
||||
"\u0097\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b3\3\2\2\2\2\u00c1"+
|
||||
"\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2"+
|
||||
"\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3"+
|
||||
"\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2"+
|
||||
"\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5"+
|
||||
"\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2"+
|
||||
"\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7"+
|
||||
"\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2\2\2\u00ff\3\2\2"+
|
||||
"\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105\3\2\2\2\2\u0107\3\2\2\2\2\u0109"+
|
||||
"\3\2\2\2\2\u010b\3\2\2\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2"+
|
||||
"\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119\3\2\2\2\2\u011f"+
|
||||
"\3\2\2\2\2\u0121\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127\3\2\2"+
|
||||
"\2\3\u0129\3\2\2\2\5\u0132\3\2\2\2\7\u0139\3\2\2\2\t\u0141\3\2\2\2\13"+
|
||||
"\u0147\3\2\2\2\r\u014c\3\2\2\2\17\u0151\3\2\2\2\21\u0157\3\2\2\2\23\u015c"+
|
||||
"\3\2\2\2\25\u0162\3\2\2\2\27\u0168\3\2\2\2\31\u0171\3\2\2\2\33\u0179\3"+
|
||||
"\2\2\2\35\u017c\3\2\2\2\37\u0183\3\2\2\2!\u0188\3\2\2\2#\u018d\3\2\2\2"+
|
||||
"%\u0195\3\2\2\2\'\u019b\3\2\2\2)\u01a3\3\2\2\2+\u01a9\3\2\2\2-\u01ad\3"+
|
||||
"\2\2\2/\u01b0\3\2\2\2\61\u01b5\3\2\2\2\63\u01c0\3\2\2\2\65\u01c7\3\2\2"+
|
||||
"\2\67\u01d2\3\2\2\29\u01d6\3\2\2\2;\u01e0\3\2\2\2=\u01e5\3\2\2\2?\u01ec"+
|
||||
"\3\2\2\2A\u01f0\3\2\2\2C\u01f8\3\2\2\2E\u0200\3\2\2\2G\u020a\3\2\2\2I"+
|
||||
"\u0211\3\2\2\2K\u0218\3\2\2\2M\u021e\3\2\2\2O\u0225\3\2\2\2Q\u022e\3\2"+
|
||||
"\2\2S\u0234\3\2\2\2U\u023b\3\2\2\2W\u0248\3\2\2\2Y\u024d\3\2\2\2[\u0253"+
|
||||
"\3\2\2\2]\u025a\3\2\2\2_\u0264\3\2\2\2a\u0268\3\2\2\2c\u026d\3\2\2\2e"+
|
||||
"\u0276\3\2\2\2g\u0280\3\2\2\2i\u0282\3\2\2\2k\u0286\3\2\2\2m\u028a\3\2"+
|
||||
"\2\2o\u028e\3\2\2\2q\u0292\3\2\2\2s\u029e\3\2\2\2u\u02a0\3\2\2\2w\u02ac"+
|
||||
"\3\2\2\2y\u02ae\3\2\2\2{\u02b2\3\2\2\2}\u02b5\3\2\2\2\177\u02b9\3\2\2"+
|
||||
"\2\u0081\u02bd\3\2\2\2\u0083\u02c7\3\2\2\2\u0085\u02cb\3\2\2\2\u0087\u02cd"+
|
||||
"\3\2\2\2\u0089\u02d3\3\2\2\2\u008b\u02dd\3\2\2\2\u008d\u02e1\3\2\2\2\u008f"+
|
||||
"\u02e3\3\2\2\2\u0091\u02e7\3\2\2\2\u0093\u02f1\3\2\2\2\u0095\u02f5\3\2"+
|
||||
"\2\2\u0097\u02f9\3\2\2\2\u0099\u0316\3\2\2\2\u009b\u0318\3\2\2\2\u009d"+
|
||||
"\u031b\3\2\2\2\u009f\u031e\3\2\2\2\u00a1\u0322\3\2\2\2\u00a3\u0324\3\2"+
|
||||
"\2\2\u00a5\u0326\3\2\2\2\u00a7\u0336\3\2\2\2\u00a9\u0338\3\2\2\2\u00ab"+
|
||||
"\u033b\3\2\2\2\u00ad\u0346\3\2\2\2\u00af\u0350\3\2\2\2\u00b1\u0352\3\2"+
|
||||
"\2\2\u00b3\u0354\3\2\2\2\u00b5\u035b\3\2\2\2\u00b7\u0361\3\2\2\2\u00b9"+
|
||||
"\u0367\3\2\2\2\u00bb\u0374\3\2\2\2\u00bd\u0376\3\2\2\2\u00bf\u037d\3\2"+
|
||||
"\2\2\u00c1\u037f\3\2\2\2\u00c3\u0384\3\2\2\2\u00c5\u0386\3\2\2\2\u00c7"+
|
||||
"\u0388\3\2\2\2\u00c9\u038a\3\2\2\2\u00cb\u038c\3\2\2\2\u00cd\u038e\3\2"+
|
||||
"\2\2\u00cf\u0390\3\2\2\2\u00d1\u0392\3\2\2\2\u00d3\u0394\3\2\2\2\u00d5"+
|
||||
"\u0396\3\2\2\2\u00d7\u0398\3\2\2\2\u00d9\u039a\3\2\2\2\u00db\u039c\3\2"+
|
||||
"\2\2\u00dd\u039e\3\2\2\2\u00df\u03a0\3\2\2\2\u00e1\u03a2\3\2\2\2\u00e3"+
|
||||
"\u03a4\3\2\2\2\u00e5\u03a7\3\2\2\2\u00e7\u03aa\3\2\2\2\u00e9\u03ad\3\2"+
|
||||
"\2\2\u00eb\u03b0\3\2\2\2\u00ed\u03b3\3\2\2\2\u00ef\u03b6\3\2\2\2\u00f1"+
|
||||
"\u03b9\3\2\2\2\u00f3\u03bc\3\2\2\2\u00f5\u03be\3\2\2\2\u00f7\u03c0\3\2"+
|
||||
"\2\2\u00f9\u03c2\3\2\2\2\u00fb\u03c4\3\2\2\2\u00fd\u03c6\3\2\2\2\u00ff"+
|
||||
"\u03c8\3\2\2\2\u0101\u03ca\3\2\2\2\u0103\u03cc\3\2\2\2\u0105\u03cf\3\2"+
|
||||
"\2\2\u0107\u03d2\3\2\2\2\u0109\u03d5\3\2\2\2\u010b\u03d8\3\2\2\2\u010d"+
|
||||
"\u03db\3\2\2\2\u010f\u03de\3\2\2\2\u0111\u03e1\3\2\2\2\u0113\u03e4\3\2"+
|
||||
"\2\2\u0115\u03e8\3\2\2\2\u0117\u03ec\3\2\2\2\u0119\u03f1\3\2\2\2\u011b"+
|
||||
"\u03fe\3\2\2\2\u011d\u0406\3\2\2\2\u011f\u0408\3\2\2\2\u0121\u040a\3\2"+
|
||||
"\2\2\u0123\u040f\3\2\2\2\u0125\u0415\3\2\2\2\u0127\u0423\3\2\2\2\u0129"+
|
||||
"\u012a\7c\2\2\u012a\u012b\7d\2\2\u012b\u012c\7u\2\2\u012c\u012d\7v\2\2"+
|
||||
"\u012d\u012e\7t\2\2\u012e\u012f\7c\2\2\u012f\u0130\7e\2\2\u0130\u0131"+
|
||||
"\7v\2\2\u0131\4\3\2\2\2\u0132\u0133\7c\2\2\u0133\u0134\7u\2\2\u0134\u0135"+
|
||||
"\7u\2\2\u0135\u0136\7g\2\2\u0136\u0137\7t\2\2\u0137\u0138\7v\2\2\u0138"+
|
||||
"\6\3\2\2\2\u0139\u013a\7d\2\2\u013a\u013b\7q\2\2\u013b\u013c\7q\2\2\u013c"+
|
||||
"\u013d\7n\2\2\u013d\u013e\7g\2\2\u013e\u013f\7c\2\2\u013f\u0140\7p\2\2"+
|
||||
"\u0140\b\3\2\2\2\u0141\u0142\7d\2\2\u0142\u0143\7t\2\2\u0143\u0144\7g"+
|
||||
"\2\2\u0144\u0145\7c\2\2\u0145\u0146\7m\2\2\u0146\n\3\2\2\2\u0147\u0148"+
|
||||
"\7d\2\2\u0148\u0149\7{\2\2\u0149\u014a\7v\2\2\u014a\u014b\7g\2\2\u014b"+
|
||||
"\f\3\2\2\2\u014c\u014d\7e\2\2\u014d\u014e\7c\2\2\u014e\u014f\7u\2\2\u014f"+
|
||||
"\u0150\7g\2\2\u0150\16\3\2\2\2\u0151\u0152\7e\2\2\u0152\u0153\7c\2\2\u0153"+
|
||||
"\u0154\7v\2\2\u0154\u0155\7e\2\2\u0155\u0156\7j\2\2\u0156\20\3\2\2\2\u0157"+
|
||||
"\u0158\7e\2\2\u0158\u0159\7j\2\2\u0159\u015a\7c\2\2\u015a\u015b\7t\2\2"+
|
||||
"\u015b\22\3\2\2\2\u015c\u015d\7e\2\2\u015d\u015e\7n\2\2\u015e\u015f\7"+
|
||||
"c\2\2\u015f\u0160\7u\2\2\u0160\u0161\7u\2\2\u0161\24\3\2\2\2\u0162\u0163"+
|
||||
"\7e\2\2\u0163\u0164\7q\2\2\u0164\u0165\7p\2\2\u0165\u0166\7u\2\2\u0166"+
|
||||
"\u0167\7v\2\2\u0167\26\3\2\2\2\u0168\u0169\7e\2\2\u0169\u016a\7q\2\2\u016a"+
|
||||
"\u016b\7p\2\2\u016b\u016c\7v\2\2\u016c\u016d\7k\2\2\u016d\u016e\7p\2\2"+
|
||||
"\u016e\u016f\7w\2\2\u016f\u0170\7g\2\2\u0170\30\3\2\2\2\u0171\u0172\7"+
|
||||
"f\2\2\u0172\u0173\7g\2\2\u0173\u0174\7h\2\2\u0174\u0175\7c\2\2\u0175\u0176"+
|
||||
"\7w\2\2\u0176\u0177\7n\2\2\u0177\u0178\7v\2\2\u0178\32\3\2\2\2\u0179\u017a"+
|
||||
"\7f\2\2\u017a\u017b\7q\2\2\u017b\34\3\2\2\2\u017c\u017d\7f\2\2\u017d\u017e"+
|
||||
"\7q\2\2\u017e\u017f\7w\2\2\u017f\u0180\7d\2\2\u0180\u0181\7n\2\2\u0181"+
|
||||
"\u0182\7g\2\2\u0182\36\3\2\2\2\u0183\u0184\7g\2\2\u0184\u0185\7n\2\2\u0185"+
|
||||
"\u0186\7u\2\2\u0186\u0187\7g\2\2\u0187 \3\2\2\2\u0188\u0189\7g\2\2\u0189"+
|
||||
"\u018a\7p\2\2\u018a\u018b\7w\2\2\u018b\u018c\7o\2\2\u018c\"\3\2\2\2\u018d"+
|
||||
"\u018e\7g\2\2\u018e\u018f\7z\2\2\u018f\u0190\7v\2\2\u0190\u0191\7g\2\2"+
|
||||
"\u0191\u0192\7p\2\2\u0192\u0193\7f\2\2\u0193\u0194\7u\2\2\u0194$\3\2\2"+
|
||||
"\2\u0195\u0196\7h\2\2\u0196\u0197\7k\2\2\u0197\u0198\7p\2\2\u0198\u0199"+
|
||||
"\7c\2\2\u0199\u019a\7n\2\2\u019a&\3\2\2\2\u019b\u019c\7h\2\2\u019c\u019d"+
|
||||
"\7k\2\2\u019d\u019e\7p\2\2\u019e\u019f\7c\2\2\u019f\u01a0\7n\2\2\u01a0"+
|
||||
"\u01a1\7n\2\2\u01a1\u01a2\7{\2\2\u01a2(\3\2\2\2\u01a3\u01a4\7h\2\2\u01a4"+
|
||||
"\u01a5\7n\2\2\u01a5\u01a6\7q\2\2\u01a6\u01a7\7c\2\2\u01a7\u01a8\7v\2\2"+
|
||||
"\u01a8*\3\2\2\2\u01a9\u01aa\7h\2\2\u01aa\u01ab\7q\2\2\u01ab\u01ac\7t\2"+
|
||||
"\2\u01ac,\3\2\2\2\u01ad\u01ae\7k\2\2\u01ae\u01af\7h\2\2\u01af.\3\2\2\2"+
|
||||
"\u01b0\u01b1\7i\2\2\u01b1\u01b2\7q\2\2\u01b2\u01b3\7v\2\2\u01b3\u01b4"+
|
||||
"\7q\2\2\u01b4\60\3\2\2\2\u01b5\u01b6\7k\2\2\u01b6\u01b7\7o\2\2\u01b7\u01b8"+
|
||||
"\7r\2\2\u01b8\u01b9\7n\2\2\u01b9\u01ba\7g\2\2\u01ba\u01bb\7o\2\2\u01bb"+
|
||||
"\u01bc\7g\2\2\u01bc\u01bd\7p\2\2\u01bd\u01be\7v\2\2\u01be\u01bf\7u\2\2"+
|
||||
"\u01bf\62\3\2\2\2\u01c0\u01c1\7k\2\2\u01c1\u01c2\7o\2\2\u01c2\u01c3\7"+
|
||||
"r\2\2\u01c3\u01c4\7q\2\2\u01c4\u01c5\7t\2\2\u01c5\u01c6\7v\2\2\u01c6\64"+
|
||||
"\3\2\2\2\u01c7\u01c8\7k\2\2\u01c8\u01c9\7p\2\2\u01c9\u01ca\7u\2\2\u01ca"+
|
||||
"\u01cb\7v\2\2\u01cb\u01cc\7c\2\2\u01cc\u01cd\7p\2\2\u01cd\u01ce\7e\2\2"+
|
||||
"\u01ce\u01cf\7g\2\2\u01cf\u01d0\7q\2\2\u01d0\u01d1\7h\2\2\u01d1\66\3\2"+
|
||||
"\2\2\u01d2\u01d3\7k\2\2\u01d3\u01d4\7p\2\2\u01d4\u01d5\7v\2\2\u01d58\3"+
|
||||
"\2\2\2\u01d6\u01d7\7k\2\2\u01d7\u01d8\7p\2\2\u01d8\u01d9\7v\2\2\u01d9"+
|
||||
"\u01da\7g\2\2\u01da\u01db\7t\2\2\u01db\u01dc\7h\2\2\u01dc\u01dd\7c\2\2"+
|
||||
"\u01dd\u01de\7e\2\2\u01de\u01df\7g\2\2\u01df:\3\2\2\2\u01e0\u01e1\7n\2"+
|
||||
"\2\u01e1\u01e2\7q\2\2\u01e2\u01e3\7p\2\2\u01e3\u01e4\7i\2\2\u01e4<\3\2"+
|
||||
"\2\2\u01e5\u01e6\7p\2\2\u01e6\u01e7\7c\2\2\u01e7\u01e8\7v\2\2\u01e8\u01e9"+
|
||||
"\7k\2\2\u01e9\u01ea\7x\2\2\u01ea\u01eb\7g\2\2\u01eb>\3\2\2\2\u01ec\u01ed"+
|
||||
"\7p\2\2\u01ed\u01ee\7g\2\2\u01ee\u01ef\7y\2\2\u01ef@\3\2\2\2\u01f0\u01f1"+
|
||||
"\7r\2\2\u01f1\u01f2\7c\2\2\u01f2\u01f3\7e\2\2\u01f3\u01f4\7m\2\2\u01f4"+
|
||||
"\u01f5\7c\2\2\u01f5\u01f6\7i\2\2\u01f6\u01f7\7g\2\2\u01f7B\3\2\2\2\u01f8"+
|
||||
"\u01f9\7r\2\2\u01f9\u01fa\7t\2\2\u01fa\u01fb\7k\2\2\u01fb\u01fc\7x\2\2"+
|
||||
"\u01fc\u01fd\7c\2\2\u01fd\u01fe\7v\2\2\u01fe\u01ff\7g\2\2\u01ffD\3\2\2"+
|
||||
"\2\u0200\u0201\7r\2\2\u0201\u0202\7t\2\2\u0202\u0203\7q\2\2\u0203\u0204"+
|
||||
"\7v\2\2\u0204\u0205\7g\2\2\u0205\u0206\7e\2\2\u0206\u0207\7v\2\2\u0207"+
|
||||
"\u0208\7g\2\2\u0208\u0209\7f\2\2\u0209F\3\2\2\2\u020a\u020b\7r\2\2\u020b"+
|
||||
"\u020c\7w\2\2\u020c\u020d\7d\2\2\u020d\u020e\7n\2\2\u020e\u020f\7k\2\2"+
|
||||
"\u020f\u0210\7e\2\2\u0210H\3\2\2\2\u0211\u0212\7t\2\2\u0212\u0213\7g\2"+
|
||||
"\2\u0213\u0214\7v\2\2\u0214\u0215\7w\2\2\u0215\u0216\7t\2\2\u0216\u0217"+
|
||||
"\7p\2\2\u0217J\3\2\2\2\u0218\u0219\7u\2\2\u0219\u021a\7j\2\2\u021a\u021b"+
|
||||
"\7q\2\2\u021b\u021c\7t\2\2\u021c\u021d\7v\2\2\u021dL\3\2\2\2\u021e\u021f"+
|
||||
"\7u\2\2\u021f\u0220\7v\2\2\u0220\u0221\7c\2\2\u0221\u0222\7v\2\2\u0222"+
|
||||
"\u0223\7k\2\2\u0223\u0224\7e\2\2\u0224N\3\2\2\2\u0225\u0226\7u\2\2\u0226"+
|
||||
"\u0227\7v\2\2\u0227\u0228\7t\2\2\u0228\u0229\7k\2\2\u0229\u022a\7e\2\2"+
|
||||
"\u022a\u022b\7v\2\2\u022b\u022c\7h\2\2\u022c\u022d\7r\2\2\u022dP\3\2\2"+
|
||||
"\2\u022e\u022f\7u\2\2\u022f\u0230\7w\2\2\u0230\u0231\7r\2\2\u0231\u0232"+
|
||||
"\7g\2\2\u0232\u0233\7t\2\2\u0233R\3\2\2\2\u0234\u0235\7u\2\2\u0235\u0236"+
|
||||
"\7y\2\2\u0236\u0237\7k\2\2\u0237\u0238\7v\2\2\u0238\u0239\7e\2\2\u0239"+
|
||||
"\u023a\7j\2\2\u023aT\3\2\2\2\u023b\u023c\7u\2\2\u023c\u023d\7{\2\2\u023d"+
|
||||
"\u023e\7p\2\2\u023e\u023f\7e\2\2\u023f\u0240\7j\2\2\u0240\u0241\7t\2\2"+
|
||||
"\u0241\u0242\7q\2\2\u0242\u0243\7p\2\2\u0243\u0244\7k\2\2\u0244\u0245"+
|
||||
"\7|\2\2\u0245\u0246\7g\2\2\u0246\u0247\7f\2\2\u0247V\3\2\2\2\u0248\u0249"+
|
||||
"\7v\2\2\u0249\u024a\7j\2\2\u024a\u024b\7k\2\2\u024b\u024c\7u\2\2\u024c"+
|
||||
"X\3\2\2\2\u024d\u024e\7v\2\2\u024e\u024f\7j\2\2\u024f\u0250\7t\2\2\u0250"+
|
||||
"\u0251\7q\2\2\u0251\u0252\7y\2\2\u0252Z\3\2\2\2\u0253\u0254\7v\2\2\u0254"+
|
||||
"\u0255\7j\2\2\u0255\u0256\7t\2\2\u0256\u0257\7q\2\2\u0257\u0258\7y\2\2"+
|
||||
"\u0258\u0259\7u\2\2\u0259\\\3\2\2\2\u025a\u025b\7v\2\2\u025b\u025c\7t"+
|
||||
"\2\2\u025c\u025d\7c\2\2\u025d\u025e\7p\2\2\u025e\u025f\7u\2\2\u025f\u0260"+
|
||||
"\7k\2\2\u0260\u0261\7g\2\2\u0261\u0262\7p\2\2\u0262\u0263\7v\2\2\u0263"+
|
||||
"^\3\2\2\2\u0264\u0265\7v\2\2\u0265\u0266\7t\2\2\u0266\u0267\7{\2\2\u0267"+
|
||||
"`\3\2\2\2\u0268\u0269\7x\2\2\u0269\u026a\7q\2\2\u026a\u026b\7k\2\2\u026b"+
|
||||
"\u026c\7f\2\2\u026cb\3\2\2\2\u026d\u026e\7x\2\2\u026e\u026f\7q\2\2\u026f"+
|
||||
"\u0270\7n\2\2\u0270\u0271\7c\2\2\u0271\u0272\7v\2\2\u0272\u0273\7k\2\2"+
|
||||
"\u0273\u0274\7n\2\2\u0274\u0275\7g\2\2\u0275d\3\2\2\2\u0276\u0277\7y\2"+
|
||||
"\2\u0277\u0278\7j\2\2\u0278\u0279\7k\2\2\u0279\u027a\7n\2\2\u027a\u027b"+
|
||||
"\7g\2\2\u027bf\3\2\2\2\u027c\u0281\5i\65\2\u027d\u0281\5k\66\2\u027e\u0281"+
|
||||
"\5m\67\2\u027f\u0281\5o8\2\u0280\u027c\3\2\2\2\u0280\u027d\3\2\2\2\u0280"+
|
||||
"\u027e\3\2\2\2\u0280\u027f\3\2\2\2\u0281h\3\2\2\2\u0282\u0284\5s:\2\u0283"+
|
||||
"\u0285\5q9\2\u0284\u0283\3\2\2\2\u0284\u0285\3\2\2\2\u0285j\3\2\2\2\u0286"+
|
||||
"\u0288\5\177@\2\u0287\u0289\5q9\2\u0288\u0287\3\2\2\2\u0288\u0289\3\2"+
|
||||
"\2\2\u0289l\3\2\2\2\u028a\u028c\5\u0087D\2\u028b\u028d\5q9\2\u028c\u028b"+
|
||||
"\3\2\2\2\u028c\u028d\3\2\2\2\u028dn\3\2\2\2\u028e\u0290\5\u008fH\2\u028f"+
|
||||
"\u0291\5q9\2\u0290\u028f\3\2\2\2\u0290\u0291\3\2\2\2\u0291p\3\2\2\2\u0292"+
|
||||
"\u0293\t\2\2\2\u0293r\3\2\2\2\u0294\u029f\7\62\2\2\u0295\u029c\5y=\2\u0296"+
|
||||
"\u0298\5u;\2\u0297\u0296\3\2\2\2\u0297\u0298\3\2\2\2\u0298\u029d\3\2\2"+
|
||||
"\2\u0299\u029a\5}?\2\u029a\u029b\5u;\2\u029b\u029d\3\2\2\2\u029c\u0297"+
|
||||
"\3\2\2\2\u029c\u0299\3\2\2\2\u029d\u029f\3\2\2\2\u029e\u0294\3\2\2\2\u029e"+
|
||||
"\u0295\3\2\2\2\u029ft\3\2\2\2\u02a0\u02a8\5w<\2\u02a1\u02a3\5{>\2\u02a2"+
|
||||
"\u02a1\3\2\2\2\u02a3\u02a6\3\2\2\2\u02a4\u02a2\3\2\2\2\u02a4\u02a5\3\2"+
|
||||
"\2\2\u02a5\u02a7\3\2\2\2\u02a6\u02a4\3\2\2\2\u02a7\u02a9\5w<\2\u02a8\u02a4"+
|
||||
"\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9v\3\2\2\2\u02aa\u02ad\7\62\2\2\u02ab"+
|
||||
"\u02ad\5y=\2\u02ac\u02aa\3\2\2\2\u02ac\u02ab\3\2\2\2\u02adx\3\2\2\2\u02ae"+
|
||||
"\u02af\t\3\2\2\u02afz\3\2\2\2\u02b0\u02b3\5w<\2\u02b1\u02b3\7a\2\2\u02b2"+
|
||||
"\u02b0\3\2\2\2\u02b2\u02b1\3\2\2\2\u02b3|\3\2\2\2\u02b4\u02b6\7a\2\2\u02b5"+
|
||||
"\u02b4\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02b5\3\2\2\2\u02b7\u02b8\3\2"+
|
||||
"\2\2\u02b8~\3\2\2\2\u02b9\u02ba\7\62\2\2\u02ba\u02bb\t\4\2\2\u02bb\u02bc"+
|
||||
"\5\u0081A\2\u02bc\u0080\3\2\2\2\u02bd\u02c5\5\u0083B\2\u02be\u02c0\5\u0085"+
|
||||
"C\2\u02bf\u02be\3\2\2\2\u02c0\u02c3\3\2\2\2\u02c1\u02bf\3\2\2\2\u02c1"+
|
||||
"\u02c2\3\2\2\2\u02c2\u02c4\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c4\u02c6\5\u0083"+
|
||||
"B\2\u02c5\u02c1\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u0082\3\2\2\2\u02c7"+
|
||||
"\u02c8\t\5\2\2\u02c8\u0084\3\2\2\2\u02c9\u02cc\5\u0083B\2\u02ca\u02cc"+
|
||||
"\7a\2\2\u02cb\u02c9\3\2\2\2\u02cb\u02ca\3\2\2\2\u02cc\u0086\3\2\2\2\u02cd"+
|
||||
"\u02cf\7\62\2\2\u02ce\u02d0\5}?\2\u02cf\u02ce\3\2\2\2\u02cf\u02d0\3\2"+
|
||||
"\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02d2\5\u0089E\2\u02d2\u0088\3\2\2\2\u02d3"+
|
||||
"\u02db\5\u008bF\2\u02d4\u02d6\5\u008dG\2\u02d5\u02d4\3\2\2\2\u02d6\u02d9"+
|
||||
"\3\2\2\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u02da\3\2\2\2\u02d9"+
|
||||
"\u02d7\3\2\2\2\u02da\u02dc\5\u008bF\2\u02db\u02d7\3\2\2\2\u02db\u02dc"+
|
||||
"\3\2\2\2\u02dc\u008a\3\2\2\2\u02dd\u02de\t\6\2\2\u02de\u008c\3\2\2\2\u02df"+
|
||||
"\u02e2\5\u008bF\2\u02e0\u02e2\7a\2\2\u02e1\u02df\3\2\2\2\u02e1\u02e0\3"+
|
||||
"\2\2\2\u02e2\u008e\3\2\2\2\u02e3\u02e4\7\62\2\2\u02e4\u02e5\t\7\2\2\u02e5"+
|
||||
"\u02e6\5\u0091I\2\u02e6\u0090\3\2\2\2\u02e7\u02ef\5\u0093J\2\u02e8\u02ea"+
|
||||
"\5\u0095K\2\u02e9\u02e8\3\2\2\2\u02ea\u02ed\3\2\2\2\u02eb\u02e9\3\2\2"+
|
||||
"\2\u02eb\u02ec\3\2\2\2\u02ec\u02ee\3\2\2\2\u02ed\u02eb\3\2\2\2\u02ee\u02f0"+
|
||||
"\5\u0093J\2\u02ef\u02eb\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u0092\3\2\2"+
|
||||
"\2\u02f1\u02f2\t\b\2\2\u02f2\u0094\3\2\2\2\u02f3\u02f6\5\u0093J\2\u02f4"+
|
||||
"\u02f6\7a\2\2\u02f5\u02f3\3\2\2\2\u02f5\u02f4\3\2\2\2\u02f6\u0096\3\2"+
|
||||
"\2\2\u02f7\u02fa\5\u0099M\2\u02f8\u02fa\5\u00a5S\2\u02f9\u02f7\3\2\2\2"+
|
||||
"\u02f9\u02f8\3\2\2\2\u02fa\u0098\3\2\2\2\u02fb\u02fc\5u;\2\u02fc\u02fe"+
|
||||
"\7\60\2\2\u02fd\u02ff\5u;\2\u02fe\u02fd\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff"+
|
||||
"\u0301\3\2\2\2\u0300\u0302\5\u009bN\2\u0301\u0300\3\2\2\2\u0301\u0302"+
|
||||
"\3\2\2\2\u0302\u0304\3\2\2\2\u0303\u0305\5\u00a3R\2\u0304\u0303\3\2\2"+
|
||||
"\2\u0304\u0305\3\2\2\2\u0305\u0317\3\2\2\2\u0306\u0307\7\60\2\2\u0307"+
|
||||
"\u0309\5u;\2\u0308\u030a\5\u009bN\2\u0309\u0308\3\2\2\2\u0309\u030a\3"+
|
||||
"\2\2\2\u030a\u030c\3\2\2\2\u030b\u030d\5\u00a3R\2\u030c\u030b\3\2\2\2"+
|
||||
"\u030c\u030d\3\2\2\2\u030d\u0317\3\2\2\2\u030e\u030f\5u;\2\u030f\u0311"+
|
||||
"\5\u009bN\2\u0310\u0312\5\u00a3R\2\u0311\u0310\3\2\2\2\u0311\u0312\3\2"+
|
||||
"\2\2\u0312\u0317\3\2\2\2\u0313\u0314\5u;\2\u0314\u0315\5\u00a3R\2\u0315"+
|
||||
"\u0317\3\2\2\2\u0316\u02fb\3\2\2\2\u0316\u0306\3\2\2\2\u0316\u030e\3\2"+
|
||||
"\2\2\u0316\u0313\3\2\2\2\u0317\u009a\3\2\2\2\u0318\u0319\5\u009dO\2\u0319"+
|
||||
"\u031a\5\u009fP\2\u031a\u009c\3\2\2\2\u031b\u031c\t\t\2\2\u031c\u009e"+
|
||||
"\3\2\2\2\u031d\u031f\5\u00a1Q\2\u031e\u031d\3\2\2\2\u031e\u031f\3\2\2"+
|
||||
"\2\u031f\u0320\3\2\2\2\u0320\u0321\5u;\2\u0321\u00a0\3\2\2\2\u0322\u0323"+
|
||||
"\t\n\2\2\u0323\u00a2\3\2\2\2\u0324\u0325\t\13\2\2\u0325\u00a4\3\2\2\2"+
|
||||
"\u0326\u0327\5\u00a7T\2\u0327\u0329\5\u00a9U\2\u0328\u032a\5\u00a3R\2"+
|
||||
"\u0329\u0328\3\2\2\2\u0329\u032a\3\2\2\2\u032a\u00a6\3\2\2\2\u032b\u032d"+
|
||||
"\5\177@\2\u032c\u032e\7\60\2\2\u032d\u032c\3\2\2\2\u032d\u032e\3\2\2\2"+
|
||||
"\u032e\u0337\3\2\2\2\u032f\u0330\7\62\2\2\u0330\u0332\t\4\2\2\u0331\u0333"+
|
||||
"\5\u0081A\2\u0332\u0331\3\2\2\2\u0332\u0333\3\2\2\2\u0333\u0334\3\2\2"+
|
||||
"\2\u0334\u0335\7\60\2\2\u0335\u0337\5\u0081A\2\u0336\u032b\3\2\2\2\u0336"+
|
||||
"\u032f\3\2\2\2\u0337\u00a8\3\2\2\2\u0338\u0339\5\u00abV\2\u0339\u033a"+
|
||||
"\5\u009fP\2\u033a\u00aa\3\2\2\2\u033b\u033c\t\f\2\2\u033c\u00ac\3\2\2"+
|
||||
"\2\u033d\u033e\7v\2\2\u033e\u033f\7t\2\2\u033f\u0340\7w\2\2\u0340\u0347"+
|
||||
"\7g\2\2\u0341\u0342\7h\2\2\u0342\u0343\7c\2\2\u0343\u0344\7n\2\2\u0344"+
|
||||
"\u0345\7u\2\2\u0345\u0347\7g\2\2\u0346\u033d\3\2\2\2\u0346\u0341\3\2\2"+
|
||||
"\2\u0347\u00ae\3\2\2\2\u0348\u0349\7)\2\2\u0349\u034a\5\u00b1Y\2\u034a"+
|
||||
"\u034b\7)\2\2\u034b\u0351\3\2\2\2\u034c\u034d\7)\2\2\u034d\u034e\5\u00b9"+
|
||||
"]\2\u034e\u034f\7)\2\2\u034f\u0351\3\2\2\2\u0350\u0348\3\2\2\2\u0350\u034c"+
|
||||
"\3\2\2\2\u0351\u00b0\3\2\2\2\u0352\u0353\n\r\2\2\u0353\u00b2\3\2\2\2\u0354"+
|
||||
"\u0356\7$\2\2\u0355\u0357\5\u00b5[\2\u0356\u0355\3\2\2\2\u0356\u0357\3"+
|
||||
"\2\2\2\u0357\u0358\3\2\2\2\u0358\u0359\7$\2\2\u0359\u00b4\3\2\2\2\u035a"+
|
||||
"\u035c\5\u00b7\\\2\u035b\u035a\3\2\2\2\u035c\u035d\3\2\2\2\u035d\u035b"+
|
||||
"\3\2\2\2\u035d\u035e\3\2\2\2\u035e\u00b6\3\2\2\2\u035f\u0362\n\16\2\2"+
|
||||
"\u0360\u0362\5\u00b9]\2\u0361\u035f\3\2\2\2\u0361\u0360\3\2\2\2\u0362"+
|
||||
"\u00b8\3\2\2\2\u0363\u0364\7^\2\2\u0364\u0368\t\17\2\2\u0365\u0368\5\u00bb"+
|
||||
"^\2\u0366\u0368\5\u00bd_\2\u0367\u0363\3\2\2\2\u0367\u0365\3\2\2\2\u0367"+
|
||||
"\u0366\3\2\2\2\u0368\u00ba\3\2\2\2\u0369\u036a\7^\2\2\u036a\u0375\5\u008b"+
|
||||
"F\2\u036b\u036c\7^\2\2\u036c\u036d\5\u008bF\2\u036d\u036e\5\u008bF\2\u036e"+
|
||||
"\u0375\3\2\2\2\u036f\u0370\7^\2\2\u0370\u0371\5\u00bf`\2\u0371\u0372\5"+
|
||||
"\u008bF\2\u0372\u0373\5\u008bF\2\u0373\u0375\3\2\2\2\u0374\u0369\3\2\2"+
|
||||
"\2\u0374\u036b\3\2\2\2\u0374\u036f\3\2\2\2\u0375\u00bc\3\2\2\2\u0376\u0377"+
|
||||
"\7^\2\2\u0377\u0378\7w\2\2\u0378\u0379\5\u0083B\2\u0379\u037a\5\u0083"+
|
||||
"B\2\u037a\u037b\5\u0083B\2\u037b\u037c\5\u0083B\2\u037c\u00be\3\2\2\2"+
|
||||
"\u037d\u037e\t\20\2\2\u037e\u00c0\3\2\2\2\u037f\u0380\7p\2\2\u0380\u0381"+
|
||||
"\7w\2\2\u0381\u0382\7n\2\2\u0382\u0383\7n\2\2\u0383\u00c2\3\2\2\2\u0384"+
|
||||
"\u0385\7*\2\2\u0385\u00c4\3\2\2\2\u0386\u0387\7+\2\2\u0387\u00c6\3\2\2"+
|
||||
"\2\u0388\u0389\7}\2\2\u0389\u00c8\3\2\2\2\u038a\u038b\7\177\2\2\u038b"+
|
||||
"\u00ca\3\2\2\2\u038c\u038d\7]\2\2\u038d\u00cc\3\2\2\2\u038e\u038f\7_\2"+
|
||||
"\2\u038f\u00ce\3\2\2\2\u0390\u0391\7=\2\2\u0391\u00d0\3\2\2\2\u0392\u0393"+
|
||||
"\7.\2\2\u0393\u00d2\3\2\2\2\u0394\u0395\7\60\2\2\u0395\u00d4\3\2\2\2\u0396"+
|
||||
"\u0397\7?\2\2\u0397\u00d6\3\2\2\2\u0398\u0399\7@\2\2\u0399\u00d8\3\2\2"+
|
||||
"\2\u039a\u039b\7>\2\2\u039b\u00da\3\2\2\2\u039c\u039d\7#\2\2\u039d\u00dc"+
|
||||
"\3\2\2\2\u039e\u039f\7\u0080\2\2\u039f\u00de\3\2\2\2\u03a0\u03a1\7A\2"+
|
||||
"\2\u03a1\u00e0\3\2\2\2\u03a2\u03a3\7<\2\2\u03a3\u00e2\3\2\2\2\u03a4\u03a5"+
|
||||
"\7?\2\2\u03a5\u03a6\7?\2\2\u03a6\u00e4\3\2\2\2\u03a7\u03a8\7>\2\2\u03a8"+
|
||||
"\u03a9\7?\2\2\u03a9\u00e6\3\2\2\2\u03aa\u03ab\7@\2\2\u03ab\u03ac\7?\2"+
|
||||
"\2\u03ac\u00e8\3\2\2\2\u03ad\u03ae\7#\2\2\u03ae\u03af\7?\2\2\u03af\u00ea"+
|
||||
"\3\2\2\2\u03b0\u03b1\7(\2\2\u03b1\u03b2\7(\2\2\u03b2\u00ec\3\2\2\2\u03b3"+
|
||||
"\u03b4\7~\2\2\u03b4\u03b5\7~\2\2\u03b5\u00ee\3\2\2\2\u03b6\u03b7\7-\2"+
|
||||
"\2\u03b7\u03b8\7-\2\2\u03b8\u00f0\3\2\2\2\u03b9\u03ba\7/\2\2\u03ba\u03bb"+
|
||||
"\7/\2\2\u03bb\u00f2\3\2\2\2\u03bc\u03bd\7-\2\2\u03bd\u00f4\3\2\2\2\u03be"+
|
||||
"\u03bf\7/\2\2\u03bf\u00f6\3\2\2\2\u03c0\u03c1\7,\2\2\u03c1\u00f8\3\2\2"+
|
||||
"\2\u03c2\u03c3\7\61\2\2\u03c3\u00fa\3\2\2\2\u03c4\u03c5\7(\2\2\u03c5\u00fc"+
|
||||
"\3\2\2\2\u03c6\u03c7\7~\2\2\u03c7\u00fe\3\2\2\2\u03c8\u03c9\7`\2\2\u03c9"+
|
||||
"\u0100\3\2\2\2\u03ca\u03cb\7\'\2\2\u03cb\u0102\3\2\2\2\u03cc\u03cd\7-"+
|
||||
"\2\2\u03cd\u03ce\7?\2\2\u03ce\u0104\3\2\2\2\u03cf\u03d0\7/\2\2\u03d0\u03d1"+
|
||||
"\7?\2\2\u03d1\u0106\3\2\2\2\u03d2\u03d3\7,\2\2\u03d3\u03d4\7?\2\2\u03d4"+
|
||||
"\u0108\3\2\2\2\u03d5\u03d6\7\61\2\2\u03d6\u03d7\7?\2\2\u03d7\u010a\3\2"+
|
||||
"\2\2\u03d8\u03d9\7(\2\2\u03d9\u03da\7?\2\2\u03da\u010c\3\2\2\2\u03db\u03dc"+
|
||||
"\7~\2\2\u03dc\u03dd\7?\2\2\u03dd\u010e\3\2\2\2\u03de\u03df\7`\2\2\u03df"+
|
||||
"\u03e0\7?\2\2\u03e0\u0110\3\2\2\2\u03e1\u03e2\7\'\2\2\u03e2\u03e3\7?\2"+
|
||||
"\2\u03e3\u0112\3\2\2\2\u03e4\u03e5\7>\2\2\u03e5\u03e6\7>\2\2\u03e6\u03e7"+
|
||||
"\7?\2\2\u03e7\u0114\3\2\2\2\u03e8\u03e9\7@\2\2\u03e9\u03ea\7@\2\2\u03ea"+
|
||||
"\u03eb\7?\2\2\u03eb\u0116\3\2\2\2\u03ec\u03ed\7@\2\2\u03ed\u03ee\7@\2"+
|
||||
"\2\u03ee\u03ef\7@\2\2\u03ef\u03f0\7?\2\2\u03f0\u0118\3\2\2\2\u03f1\u03f5"+
|
||||
"\5\u011b\u008e\2\u03f2\u03f4\5\u011d\u008f\2\u03f3\u03f2\3\2\2\2\u03f4"+
|
||||
"\u03f7\3\2\2\2\u03f5\u03f3\3\2\2\2\u03f5\u03f6\3\2\2\2\u03f6\u011a\3\2"+
|
||||
"\2\2\u03f7\u03f5\3\2\2\2\u03f8\u03ff\t\21\2\2\u03f9\u03fa\n\22\2\2\u03fa"+
|
||||
"\u03ff\6\u008e\2\2\u03fb\u03fc\t\23\2\2\u03fc\u03fd\t\24\2\2\u03fd\u03ff"+
|
||||
"\6\u008e\3\2\u03fe\u03f8\3\2\2\2\u03fe\u03f9\3\2\2\2\u03fe\u03fb\3\2\2"+
|
||||
"\2\u03ff\u011c\3\2\2\2\u0400\u0407\t\25\2\2\u0401\u0402\n\22\2\2\u0402"+
|
||||
"\u0407\6\u008f\4\2\u0403\u0404\t\23\2\2\u0404\u0405\t\24\2\2\u0405\u0407"+
|
||||
"\6\u008f\5\2\u0406\u0400\3\2\2\2\u0406\u0401\3\2\2\2\u0406\u0403\3\2\2"+
|
||||
"\2\u0407\u011e\3\2\2\2\u0408\u0409\7B\2\2\u0409\u0120\3\2\2\2\u040a\u040b"+
|
||||
"\7\60\2\2\u040b\u040c\7\60\2\2\u040c\u040d\7\60\2\2\u040d\u0122\3\2\2"+
|
||||
"\2\u040e\u0410\t\26\2\2\u040f\u040e\3\2\2\2\u0410\u0411\3\2\2\2\u0411"+
|
||||
"\u040f\3\2\2\2\u0411\u0412\3\2\2\2\u0412\u0413\3\2\2\2\u0413\u0414\b\u0092"+
|
||||
"\2\2\u0414\u0124\3\2\2\2\u0415\u0416\7\61\2\2\u0416\u0417\7,\2\2\u0417"+
|
||||
"\u041b\3\2\2\2\u0418\u041a\13\2\2\2\u0419\u0418\3\2\2\2\u041a\u041d\3"+
|
||||
"\2\2\2\u041b\u041c\3\2\2\2\u041b\u0419\3\2\2\2\u041c\u041e\3\2\2\2\u041d"+
|
||||
"\u041b\3\2\2\2\u041e\u041f\7,\2\2\u041f\u0420\7\61\2\2\u0420\u0421\3\2"+
|
||||
"\2\2\u0421\u0422\b\u0093\2\2\u0422\u0126\3\2\2\2\u0423\u0424\7\61\2\2"+
|
||||
"\u0424\u0425\7\61\2\2\u0425\u0429\3\2\2\2\u0426\u0428\n\27\2\2\u0427\u0426"+
|
||||
"\3\2\2\2\u0428\u042b\3\2\2\2\u0429\u0427\3\2\2\2\u0429\u042a\3\2\2\2\u042a"+
|
||||
"\u042c\3\2\2\2\u042b\u0429\3\2\2\2\u042c\u042d\b\u0094\2\2\u042d\u0128"+
|
||||
"\3\2\2\2\64\2\u0280\u0284\u0288\u028c\u0290\u0297\u029c\u029e\u02a4\u02a8"+
|
||||
"\u02ac\u02b2\u02b7\u02c1\u02c5\u02cb\u02cf\u02d7\u02db\u02e1\u02eb\u02ef"+
|
||||
"\u02f5\u02f9\u02fe\u0301\u0304\u0309\u030c\u0311\u0316\u031e\u0329\u032d"+
|
||||
"\u0332\u0336\u0346\u0350\u0356\u035d\u0361\u0367\u0374\u03f5\u03fe\u0406"+
|
||||
"\u0411\u041b\u0429\3\b\2\2";
|
||||
public static final ATN _ATN =
|
||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||
static {
|
||||
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
|
||||
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
|
||||
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
all:
|
||||
java -jar ./antlr-4.4-complete.jar Java8.g4
|
||||
javac -cp ./antlr-4.4-complete.jar:. *.java
|
||||
|
@ -1,35 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
|
||||
|
||||
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
|
||||
|
||||
<appender name="CONSOLE" class="de.dhbwstuttgart.logger.ConsoleAppender">
|
||||
<param name="Target" value="System.out"/>
|
||||
|
||||
<layout class="de.dhbwstuttgart.logger.PatternLayout">
|
||||
<param name="ConversionPattern" value="%-15C{1} %-5p [%-9c] %m%n"/>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<logger name="codegen">
|
||||
<level value="INFO"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
<logger name="parser">
|
||||
<level value="OFF"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
<logger name="inference">
|
||||
<level value="WARN"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
|
||||
<logger name="bytecode">
|
||||
<level value="INFO"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
</log4j:configuration>
|
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
|
||||
|
||||
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
|
||||
|
||||
<appender name="CONSOLE" class="de.dhbwstuttgart.logger.ConsoleAppender">
|
||||
<param name="Target" value="System.out"/>
|
||||
|
||||
<layout class="de.dhbwstuttgart.logger.PatternLayout">
|
||||
<param name="ConversionPattern" value="%-15C{1} %-5p [%-9c] %m%n"/>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<logger name="trtest">
|
||||
<level value="DEBUG"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
<logger name="funcTest">
|
||||
<level value="DEBUG"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
</log4j:configuration>
|
@ -1,3 +0,0 @@
|
||||
class Matrix{
|
||||
<A extends B, C extends B> String op = "String";
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
class FieldInitializationTest{
|
||||
String var = "hallo";
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
class Test{
|
||||
<A> A var;
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
import java.util.*;
|
||||
|
||||
class ImportTest{
|
||||
}
|
@ -55,7 +55,7 @@
|
||||
<li><a href="de/dhbwstuttgart/typeinference/unify/CSubstitutionSet.html" title="class in de.dhbwstuttgart.typeinference.unify" target="classFrame">CSubstitutionSet</a></li>
|
||||
<li><a href="de/dhbwstuttgart/myexception/CTypeReconstructionException.html" title="class in de.dhbwstuttgart.myexception" target="classFrame">CTypeReconstructionException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/unify/CVectorSet.html" title="class in de.dhbwstuttgart.typeinference.unify" target="classFrame">CVectorSet</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/DebugException.html" title="class in de.dhbwstuttgart.typeinference.exceptions" target="classFrame">DebugException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/DebugException.html" title="class in de.dhbwstuttgart.exceptions" target="classFrame">DebugException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/misc/DeclId.html" title="class in de.dhbwstuttgart.syntaxtree.misc" target="classFrame">DeclId</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/operator/DivideOp.html" title="class in de.dhbwstuttgart.syntaxtree.operator" target="classFrame">DivideOp</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/DoubleLiteral.html" title="class in de.dhbwstuttgart.syntaxtree.statement" target="classFrame">DoubleLiteral</a></li>
|
||||
@ -203,7 +203,7 @@
|
||||
<li><a href="syntaxTree/NodeEqualTest.html" title="class in syntaxTree" target="classFrame">NodeEqualTest</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/operator/NotEqualOp.html" title="class in de.dhbwstuttgart.syntaxtree.operator" target="classFrame">NotEqualOp</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/NotExpr.html" title="class in de.dhbwstuttgart.syntaxtree.statement" target="classFrame">NotExpr</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/NotImplementedException.html" title="class in de.dhbwstuttgart.typeinference.exceptions" target="classFrame">NotImplementedException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/NotImplementedException.html" title="class in de.dhbwstuttgart.exceptions" target="classFrame">NotImplementedException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/Null.html" title="class in de.dhbwstuttgart.syntaxtree.statement" target="classFrame">Null</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/type/ObjectType.html" title="class in de.dhbwstuttgart.syntaxtree.type" target="classFrame">ObjectType</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/OderConstraint.html" title="class in de.dhbwstuttgart.typeinference" target="classFrame">OderConstraint</a></li>
|
||||
@ -228,7 +228,7 @@
|
||||
<li><a href="de/dhbwstuttgart/typeinference/assumptions/ParameterAssumption.html" title="class in de.dhbwstuttgart.typeinference.assumptions" target="classFrame">ParameterAssumption</a></li>
|
||||
<li><a href="plugindevelopment/ParameterInsertTest.html" title="class in plugindevelopment" target="classFrame">ParameterInsertTest</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/ParameterList.html" title="class in de.dhbwstuttgart.syntaxtree" target="classFrame">ParameterList</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions" target="classFrame">ParserError</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions" target="classFrame">ParserError</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/operator/PlusOp.html" title="class in de.dhbwstuttgart.syntaxtree.operator" target="classFrame">PlusOp</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/PositivExpr.html" title="class in de.dhbwstuttgart.syntaxtree.statement" target="classFrame">PositivExpr</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.html" title="class in de.dhbwstuttgart.syntaxtree.statement" target="classFrame">PostDecExpr</a></li>
|
||||
@ -282,7 +282,7 @@
|
||||
<li><a href="de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.html" title="class in de.dhbwstuttgart.typeinference.assumptions" target="classFrame">TypeAssumptions</a></li>
|
||||
<li><a href="plugindevelopment/TypeInsertTests/LargeSourceCodeTests/TypedMatrixSimpleTest.html" title="class in plugindevelopment.TypeInsertTests.LargeSourceCodeTests" target="classFrame">TypedMatrixSimpleTest</a></li>
|
||||
<li><a href="plugindevelopment/TypeInsertTests/LargeSourceCodeTests/TypedMatrixTest.html" title="class in plugindevelopment.TypeInsertTests.LargeSourceCodeTests" target="classFrame">TypedMatrixTest</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.typeinference.exceptions" target="classFrame">TypeinferenceException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.exceptions" target="classFrame">TypeinferenceException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/TypeinferenceResultSet.html" title="class in de.dhbwstuttgart.typeinference" target="classFrame">TypeinferenceResultSet</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/TypeInsertable.html" title="interface in de.dhbwstuttgart.typeinference" target="classFrame"><span class="interfaceName">TypeInsertable</span></a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/typedeployment/TypeInsertPoint.html" title="class in de.dhbwstuttgart.typeinference.typedeployment" target="classFrame">TypeInsertPoint</a></li>
|
||||
|
@ -55,7 +55,7 @@
|
||||
<li><a href="de/dhbwstuttgart/typeinference/unify/CSubstitutionSet.html" title="class in de.dhbwstuttgart.typeinference.unify">CSubstitutionSet</a></li>
|
||||
<li><a href="de/dhbwstuttgart/myexception/CTypeReconstructionException.html" title="class in de.dhbwstuttgart.myexception">CTypeReconstructionException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/unify/CVectorSet.html" title="class in de.dhbwstuttgart.typeinference.unify">CVectorSet</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/DebugException.html" title="class in de.dhbwstuttgart.typeinference.exceptions">DebugException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/DebugException.html" title="class in de.dhbwstuttgart.exceptions">DebugException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/misc/DeclId.html" title="class in de.dhbwstuttgart.syntaxtree.misc">DeclId</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/operator/DivideOp.html" title="class in de.dhbwstuttgart.syntaxtree.operator">DivideOp</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/DoubleLiteral.html" title="class in de.dhbwstuttgart.syntaxtree.statement">DoubleLiteral</a></li>
|
||||
@ -203,7 +203,7 @@
|
||||
<li><a href="syntaxTree/NodeEqualTest.html" title="class in syntaxTree">NodeEqualTest</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/operator/NotEqualOp.html" title="class in de.dhbwstuttgart.syntaxtree.operator">NotEqualOp</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/NotExpr.html" title="class in de.dhbwstuttgart.syntaxtree.statement">NotExpr</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/NotImplementedException.html" title="class in de.dhbwstuttgart.typeinference.exceptions">NotImplementedException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/NotImplementedException.html" title="class in de.dhbwstuttgart.exceptions">NotImplementedException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/Null.html" title="class in de.dhbwstuttgart.syntaxtree.statement">Null</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/type/ObjectType.html" title="class in de.dhbwstuttgart.syntaxtree.type">ObjectType</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/OderConstraint.html" title="class in de.dhbwstuttgart.typeinference">OderConstraint</a></li>
|
||||
@ -228,7 +228,7 @@
|
||||
<li><a href="de/dhbwstuttgart/typeinference/assumptions/ParameterAssumption.html" title="class in de.dhbwstuttgart.typeinference.assumptions">ParameterAssumption</a></li>
|
||||
<li><a href="plugindevelopment/ParameterInsertTest.html" title="class in plugindevelopment">ParameterInsertTest</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/ParameterList.html" title="class in de.dhbwstuttgart.syntaxtree">ParameterList</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/operator/PlusOp.html" title="class in de.dhbwstuttgart.syntaxtree.operator">PlusOp</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/PositivExpr.html" title="class in de.dhbwstuttgart.syntaxtree.statement">PositivExpr</a></li>
|
||||
<li><a href="de/dhbwstuttgart/syntaxtree/statement/PostDecExpr.html" title="class in de.dhbwstuttgart.syntaxtree.statement">PostDecExpr</a></li>
|
||||
@ -282,7 +282,7 @@
|
||||
<li><a href="de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.html" title="class in de.dhbwstuttgart.typeinference.assumptions">TypeAssumptions</a></li>
|
||||
<li><a href="plugindevelopment/TypeInsertTests/LargeSourceCodeTests/TypedMatrixSimpleTest.html" title="class in plugindevelopment.TypeInsertTests.LargeSourceCodeTests">TypedMatrixSimpleTest</a></li>
|
||||
<li><a href="plugindevelopment/TypeInsertTests/LargeSourceCodeTests/TypedMatrixTest.html" title="class in plugindevelopment.TypeInsertTests.LargeSourceCodeTests">TypedMatrixTest</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.typeinference.exceptions">TypeinferenceException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.exceptions">TypeinferenceException</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/TypeinferenceResultSet.html" title="class in de.dhbwstuttgart.typeinference">TypeinferenceResultSet</a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/TypeInsertable.html" title="interface in de.dhbwstuttgart.typeinference"><span class="interfaceName">TypeInsertable</span></a></li>
|
||||
<li><a href="de/dhbwstuttgart/typeinference/typedeployment/TypeInsertPoint.html" title="class in de.dhbwstuttgart.typeinference.typedeployment">TypeInsertPoint</a></li>
|
||||
|
@ -567,11 +567,11 @@ implements <a href="../../../de/dhbwstuttgart/core/MyCompilerAPI.html" title="in
|
||||
<li class="blockList">
|
||||
<h4>parse2SyntaxTree</h4>
|
||||
<pre>private <a href="../../../de/dhbwstuttgart/syntaxtree/SourceFile.html" title="class in de.dhbwstuttgart.syntaxtree">SourceFile</a> parse2SyntaxTree(java.io.Reader fileContent)
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></pre>
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></pre>
|
||||
<div class="block">Parst den Inhalt einer Datei zu einem Syntaxbaum.</div>
|
||||
<dl>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></code></dd>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
@ -582,7 +582,7 @@ implements <a href="../../../de/dhbwstuttgart/core/MyCompilerAPI.html" title="in
|
||||
<li class="blockList">
|
||||
<h4>parse</h4>
|
||||
<pre>public void parse(<a href="../../../de/dhbwstuttgart/typeinference/Menge.html" title="class in de.dhbwstuttgart.typeinference">Menge</a><java.lang.String> filenames)
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></pre>
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></pre>
|
||||
<div class="block">Diese Funktion nimmt einen Menge von Dateinamen. Alle diese Dateien werden zu einem SyntaxBaum geparst.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
@ -590,7 +590,7 @@ implements <a href="../../../de/dhbwstuttgart/core/MyCompilerAPI.html" title="in
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>filenames</code> - - Eine Liste von Quellcodedateien, welche gseparst werden sollen</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></code></dd>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -237,7 +237,7 @@ var activeTableTab = "activeTableTab";
|
||||
<h4>typeReconstruction</h4>
|
||||
<pre><a href="../../../de/dhbwstuttgart/typeinference/Menge.html" title="class in de.dhbwstuttgart.typeinference">Menge</a><<a href="../../../de/dhbwstuttgart/typeinference/TypeinferenceResultSet.html" title="class in de.dhbwstuttgart.typeinference">TypeinferenceResultSet</a>> typeReconstruction()
|
||||
throws java.lang.NullPointerException,
|
||||
<a href="../../../de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.typeinference.exceptions">TypeinferenceException</a></pre>
|
||||
<a href="../../../de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.exceptions">TypeinferenceException</a></pre>
|
||||
<div class="block">Author: Jörg Bäuerle<br/>
|
||||
Ruft den Typrekonstruktionsalgorithmus auf.</div>
|
||||
<dl>
|
||||
@ -247,7 +247,7 @@ var activeTableTab = "activeTableTab";
|
||||
<dd><code>java.lang.NullPointerException</code> - Wenn noch kein abstrakter Syntaxbaum vorhanden
|
||||
ist. @throws CTypeReconstructionException Wenn ein Fehler bei der
|
||||
Typrekonstruktion auftritt.</dd>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.typeinference.exceptions">TypeinferenceException</a></code></dd>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/TypeinferenceException.html" title="class in de.dhbwstuttgart.exceptions">TypeinferenceException</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
@ -280,13 +280,13 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<h4>parse</h4>
|
||||
<pre>void parse(<a href="../../../de/dhbwstuttgart/typeinference/Menge.html" title="class in de.dhbwstuttgart.typeinference">Menge</a><java.lang.String> filenames)
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></pre>
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></pre>
|
||||
<div class="block">Parst zusammenhängende JavaKlassen in verschiedenen Dateien.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>filenames</code> - - Eine Liste von Quellcodedateien, welche gseparst werden sollen</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></code></dd>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
@ -297,7 +297,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<h4>parse</h4>
|
||||
<pre><a href="../../../de/dhbwstuttgart/syntaxtree/SourceFile.html" title="class in de.dhbwstuttgart.syntaxtree">SourceFile</a> parse(java.lang.String sourceCode)
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></pre>
|
||||
throws <a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></pre>
|
||||
<div class="block">Parst den SourceCode einer Datei.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
@ -305,7 +305,7 @@ var activeTableTab = "activeTableTab";
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>den aus dem sourceCode generierten Syntaxbaum</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.typeinference.exceptions">ParserError</a></code></dd>
|
||||
<dd><code><a href="../../../de/dhbwstuttgart/typeinference/exceptions/ParserError.html" title="class in de.dhbwstuttgart.exceptions">ParserError</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -100,7 +100,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li>java.lang.Object</li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.parser.JavaClassName</li>
|
||||
<li>de.dhbwstuttgart.typecheck.JavaClassName</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<html lang="de">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_05) on Tue May 12 19:56:24 CEST 2015 -->
|
||||
<title>Uses of Class de.dhbwstuttgart.parser.JavaClassName</title>
|
||||
<title>Uses of Class de.dhbwstuttgart.typecheck.JavaClassName</title>
|
||||
<meta name="date" content="2015-05-12">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../../script.js"></script>
|
||||
@ -70,7 +70,7 @@
|
||||
</a></div>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
<div class="header">
|
||||
<h2 title="Uses of Class de.dhbwstuttgart.parser.JavaClassName" class="title">Uses of Class<br>de.dhbwstuttgart.parser.JavaClassName</h2>
|
||||
<h2 title="Uses of Class de.dhbwstuttgart.typecheck.JavaClassName" class="title">Uses of Class<br>de.dhbwstuttgart.parser.JavaClassName</h2>
|
||||
</div>
|
||||
<div class="classUseContainer">
|
||||
<ul class="blockList">
|
||||
|
@ -91,7 +91,7 @@
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.typeinference.exceptions">de.dhbwstuttgart.typeinference.exceptions</a></td>
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.exceptions">de.dhbwstuttgart.exceptions</a></td>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@ -160,12 +160,12 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</li>
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.typeinference.exceptions">
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.exceptions">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Uses of <a href="../../../../de/dhbwstuttgart/parser/JavaParser.yyException.html" title="class in de.dhbwstuttgart.parser">JavaParser.yyException</a> in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.typeinference.exceptions</a></h3>
|
||||
<h3>Uses of <a href="../../../../de/dhbwstuttgart/parser/JavaParser.yyException.html" title="class in de.dhbwstuttgart.parser">JavaParser.yyException</a> in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.exceptions</a></h3>
|
||||
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
|
||||
<caption><span>Constructors in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.typeinference.exceptions</a> with parameters of type <a href="../../../../de/dhbwstuttgart/parser/JavaParser.yyException.html" title="class in de.dhbwstuttgart.parser">JavaParser.yyException</a></span><span class="tabEnd"> </span></caption>
|
||||
<caption><span>Constructors in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.exceptions</a> with parameters of type <a href="../../../../de/dhbwstuttgart/parser/JavaParser.yyException.html" title="class in de.dhbwstuttgart.parser">JavaParser.yyException</a></span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colOne" scope="col">Constructor and Description</th>
|
||||
</tr>
|
||||
|
@ -107,7 +107,7 @@
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.typeinference.exceptions">de.dhbwstuttgart.typeinference.exceptions</a></td>
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.exceptions">de.dhbwstuttgart.exceptions</a></td>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
@ -238,11 +238,11 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</li>
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.typeinference.exceptions">
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.exceptions">
|
||||
<!-- -->
|
||||
</a>
|
||||
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
|
||||
<caption><span>Classes in <a href="../../../de/dhbwstuttgart/parser/package-summary.html">de.dhbwstuttgart.parser</a> used by <a href="../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.typeinference.exceptions</a></span><span class="tabEnd"> </span></caption>
|
||||
<caption><span>Classes in <a href="../../../de/dhbwstuttgart/parser/package-summary.html">de.dhbwstuttgart.parser</a> used by <a href="../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.exceptions</a></span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colOne" scope="col">Class and Description</th>
|
||||
</tr>
|
||||
|
@ -69,9 +69,9 @@
|
||||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">Field</a> | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">Field</a> | </li>
|
||||
<li><a href="#constructor.summary">Constr</a> | </li>
|
||||
<li><a href="#methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">Method</a></li>
|
||||
<li><a href="#methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">Method</a></li>
|
||||
</ul>
|
||||
<ul class="subNavList">
|
||||
<li>Detail: </li>
|
||||
@ -100,7 +100,7 @@
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.GTVDeclarationContext</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.Class</a></li>
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.ClassOrInterface</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.BasicAssumptionClass</li>
|
||||
@ -137,7 +137,7 @@ extends <a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class i
|
||||
</a>
|
||||
<h3>Field Summary</h3>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">
|
||||
<li class="blockList"><a name="fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class de.dhbwstuttgart.syntaxtree.<a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">Class</a></h3>
|
||||
@ -173,7 +173,7 @@ extends <a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class i
|
||||
</a>
|
||||
<h3>Method Summary</h3>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class de.dhbwstuttgart.syntaxtree.<a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">Class</a></h3>
|
||||
@ -287,9 +287,9 @@ extends <a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class i
|
||||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">Field</a> | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">Field</a> | </li>
|
||||
<li><a href="#constructor.summary">Constr</a> | </li>
|
||||
<li><a href="#methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">Method</a></li>
|
||||
<li><a href="#methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">Method</a></li>
|
||||
</ul>
|
||||
<ul class="subNavList">
|
||||
<li>Detail: </li>
|
||||
|
@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.GTVDeclarationContext</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.Class</li>
|
||||
<li>de.dhbwstuttgart.syntaxtree.ClassOrInterface</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -75,7 +75,7 @@ var activeTableTab = "activeTableTab";
|
||||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">Field</a> | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">Field</a> | </li>
|
||||
<li><a href="#constructor.summary">Constr</a> | </li>
|
||||
<li><a href="#method.summary">Method</a></li>
|
||||
</ul>
|
||||
@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/GTVDeclarationContext.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.GTVDeclarationContext</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.Class</a></li>
|
||||
<li><a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">de.dhbwstuttgart.syntaxtree.ClassOrInterface</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.Interface</li>
|
||||
@ -148,7 +148,7 @@ extends <a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class i
|
||||
</a>
|
||||
<h3>Field Summary</h3>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">
|
||||
<li class="blockList"><a name="fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class de.dhbwstuttgart.syntaxtree.<a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">Class</a></h3>
|
||||
@ -205,7 +205,7 @@ extends <a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class i
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class de.dhbwstuttgart.syntaxtree.<a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class in de.dhbwstuttgart.syntaxtree">Class</a></h3>
|
||||
@ -356,7 +356,7 @@ extends <a href="../../../de/dhbwstuttgart/syntaxtree/Class.html" title="class i
|
||||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.Class">Field</a> | </li>
|
||||
<li><a href="#fields.inherited.from.class.de.dhbwstuttgart.syntaxtree.ClassOrInterface">Field</a> | </li>
|
||||
<li><a href="#constructor.summary">Constr</a> | </li>
|
||||
<li><a href="#method.summary">Method</a></li>
|
||||
</ul>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<html lang="de">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_05) on Tue May 12 19:56:24 CEST 2015 -->
|
||||
<title>Uses of Class de.dhbwstuttgart.syntaxtree.Class</title>
|
||||
<title>Uses of Class de.dhbwstuttgart.syntaxtree.ClassOrInterface</title>
|
||||
<meta name="date" content="2015-05-12">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
|
||||
<script type="text/javascript" src="../../../../script.js"></script>
|
||||
@ -70,7 +70,7 @@
|
||||
</a></div>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
<div class="header">
|
||||
<h2 title="Uses of Class de.dhbwstuttgart.syntaxtree.Class" class="title">Uses of Class<br>de.dhbwstuttgart.syntaxtree.Class</h2>
|
||||
<h2 title="Uses of Class de.dhbwstuttgart.syntaxtree.ClassOrInterface" class="title">Uses of Class<br>de.dhbwstuttgart.syntaxtree.Class</h2>
|
||||
</div>
|
||||
<div class="classUseContainer">
|
||||
<ul class="blockList">
|
||||
|
@ -111,7 +111,7 @@
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.typeinference.exceptions">de.dhbwstuttgart.typeinference.exceptions</a></td>
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.exceptions">de.dhbwstuttgart.exceptions</a></td>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
@ -1296,12 +1296,12 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</li>
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.typeinference.exceptions">
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.exceptions">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Uses of <a href="../../../../de/dhbwstuttgart/syntaxtree/SyntaxTreeNode.html" title="class in de.dhbwstuttgart.syntaxtree">SyntaxTreeNode</a> in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.typeinference.exceptions</a></h3>
|
||||
<h3>Uses of <a href="../../../../de/dhbwstuttgart/syntaxtree/SyntaxTreeNode.html" title="class in de.dhbwstuttgart.syntaxtree">SyntaxTreeNode</a> in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.exceptions</a></h3>
|
||||
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
|
||||
<caption><span>Constructors in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.typeinference.exceptions</a> with parameters of type <a href="../../../../de/dhbwstuttgart/syntaxtree/SyntaxTreeNode.html" title="class in de.dhbwstuttgart.syntaxtree">SyntaxTreeNode</a></span><span class="tabEnd"> </span></caption>
|
||||
<caption><span>Constructors in <a href="../../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.exceptions</a> with parameters of type <a href="../../../../de/dhbwstuttgart/syntaxtree/SyntaxTreeNode.html" title="class in de.dhbwstuttgart.syntaxtree">SyntaxTreeNode</a></span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colOne" scope="col">Constructor and Description</th>
|
||||
</tr>
|
||||
|
@ -115,7 +115,7 @@
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.typeinference.exceptions">de.dhbwstuttgart.typeinference.exceptions</a></td>
|
||||
<td class="colFirst"><a href="#de.dhbwstuttgart.exceptions">de.dhbwstuttgart.exceptions</a></td>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
@ -367,11 +367,11 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</li>
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.typeinference.exceptions">
|
||||
<li class="blockList"><a name="de.dhbwstuttgart.exceptions">
|
||||
<!-- -->
|
||||
</a>
|
||||
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
|
||||
<caption><span>Classes in <a href="../../../de/dhbwstuttgart/syntaxtree/package-summary.html">de.dhbwstuttgart.syntaxtree</a> used by <a href="../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.typeinference.exceptions</a></span><span class="tabEnd"> </span></caption>
|
||||
<caption><span>Classes in <a href="../../../de/dhbwstuttgart/syntaxtree/package-summary.html">de.dhbwstuttgart.syntaxtree</a> used by <a href="../../../de/dhbwstuttgart/typeinference/exceptions/package-summary.html">de.dhbwstuttgart.exceptions</a></span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colOne" scope="col">Class and Description</th>
|
||||
</tr>
|
||||
|
@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../../de/dhbwstuttgart/syntaxtree/statement/Literal.html" title="class in de.dhbwstuttgart.syntaxtree.statement">de.dhbwstuttgart.syntaxtree.statement.Literal</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.BoolLiteral</li>
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.literal.BoolLiteral</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../../de/dhbwstuttgart/syntaxtree/statement/Literal.html" title="class in de.dhbwstuttgart.syntaxtree.statement">de.dhbwstuttgart.syntaxtree.statement.Literal</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.CharLiteral</li>
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.literal.CharLiteral</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../../de/dhbwstuttgart/syntaxtree/statement/Literal.html" title="class in de.dhbwstuttgart.syntaxtree.statement">de.dhbwstuttgart.syntaxtree.statement.Literal</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.DoubleLiteral</li>
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.literal.DoubleLiteral</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../../de/dhbwstuttgart/syntaxtree/statement/Literal.html" title="class in de.dhbwstuttgart.syntaxtree.statement">de.dhbwstuttgart.syntaxtree.statement.Literal</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.FloatLiteral</li>
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.literal.FloatLiteral</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li><a href="../../../../de/dhbwstuttgart/syntaxtree/statement/Literal.html" title="class in de.dhbwstuttgart.syntaxtree.statement">de.dhbwstuttgart.syntaxtree.statement.Literal</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.IntLiteral</li>
|
||||
<li>de.dhbwstuttgart.syntaxtree.statement.literal.NumberLiteral</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|