Skip to content

Decouple ANTLR AST from Painless #18286

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 59 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
a825ff3
Checkpoint.
jdconrad Apr 21, 2016
171e0d2
Checkpoint.
jdconrad Apr 21, 2016
c04a774
Checkpoint.
jdconrad Apr 21, 2016
c981886
Checkpoint.
jdconrad Apr 22, 2016
75e461f
Checkpoint.
jdconrad Apr 28, 2016
968e08d
Checkpoint.
jdconrad Apr 29, 2016
e4ad333
Checkpoint.
jdconrad Apr 30, 2016
11bdff7
Checkpoint.
jdconrad May 1, 2016
6d531fa
Checkpoint.
jdconrad May 2, 2016
6f48e91
Checkpoint.
jdconrad May 3, 2016
a04b63a
Merge branch 'master' into ast5
jdconrad May 3, 2016
8d9c4e1
Checkpoint.
jdconrad May 3, 2016
b7a8a2b
Checkpoint.
jdconrad May 4, 2016
2626660
Checkpoint.
jdconrad May 4, 2016
3cf930b
Checkpoint.
jdconrad May 5, 2016
d5d93f9
Checkpoint.
jdconrad May 5, 2016
f4da775
All nodes.
jdconrad May 5, 2016
dbefd10
Checkpoing.
jdconrad May 5, 2016
7926022
Merge branch 'master' into ast5
jdconrad May 5, 2016
b2c0246
Fix filename.
jdconrad May 5, 2016
609f860
Fix name of node.
jdconrad May 5, 2016
7c50d02
Checkpoint.
jdconrad May 5, 2016
77c5190
Merge branch 'master' into ast5
jdconrad May 5, 2016
bf0a751
Checkpoint.
jdconrad May 5, 2016
6022549
Merge branch 'master' into ast5
jdconrad May 6, 2016
8a87d19
Checkpoint.
jdconrad May 6, 2016
11197f7
Fixed up variables nodes.
jdconrad May 6, 2016
8a5985c
Fixes.
jdconrad May 6, 2016
08479a3
Fixed tests.
jdconrad May 7, 2016
60ff8b1
Merge branch 'master' into ast5
jdconrad May 7, 2016
484dd99
Checkpoint.
jdconrad May 9, 2016
f06c030
Checkpoint.
jdconrad May 10, 2016
a15c212
Merge branch 'master' into ast5
jdconrad May 10, 2016
1ecb827
Checkpoint.
jdconrad May 10, 2016
57f15ed
Removed excessive packages.
jdconrad May 10, 2016
c98dabe
Merge branch 'master' into ast5
jdconrad May 10, 2016
f9eec51
Added performance from master.
jdconrad May 10, 2016
22bfaf0
Updated special variables.
jdconrad May 11, 2016
3950666
Merge branch 'master' into ast5
jdconrad May 11, 2016
2bd2691
Removed unncessary map from Definition.
jdconrad May 11, 2016
f06cdcf
Changed grammar naming.
jdconrad May 11, 2016
bf91f49
Added some basic documentation.
jdconrad May 11, 2016
80ab1a1
More documentation.
jdconrad May 11, 2016
3c5ddb7
More documentation.
jdconrad May 11, 2016
7e6c931
More documentation.
jdconrad May 11, 2016
d76245f
More documentation.
jdconrad May 11, 2016
1577bd5
More documentation.
jdconrad May 11, 2016
5fac4f3
More documentation.
jdconrad May 11, 2016
90cabaa
More documentation.
jdconrad May 11, 2016
6b99fc2
Even more documentation. Documentation for days.
jdconrad May 11, 2016
fdbcb2c
Merge branch 'master' into ast5
jdconrad May 11, 2016
488172d
Updated longs in Def.
jdconrad May 11, 2016
452e254
Quick fixes.
jdconrad May 11, 2016
2e31f11
Revent accidental doc changes.
jdconrad May 11, 2016
ead75aa
Merge branch 'master' into ast5
jdconrad May 12, 2016
95acc5c
Test fix.
jdconrad May 12, 2016
0950802
Merge branch 'master' into ast5
jdconrad May 12, 2016
304360f
Fix debugger.
jdconrad May 12, 2016
53294a5
Merge branch 'master' into ast5
jdconrad May 12, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions buildSrc/src/main/resources/checkstyle_suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
<!-- On Windows, Checkstyle matches files using \ path separator -->

<!-- These files are generated by ANTLR so its silly to hold them to our rules. -->
<suppress files="org[/\\]elasticsearch[/\\]painless[/\\]PainlessLexer\.java" checks="." />
<suppress files="org[/\\]elasticsearch[/\\]painless[/\\]PainlessParser(|BaseVisitor|Visitor)\.java" checks="." />
<suppress files="org[/\\]elasticsearch[/\\]painless[/\\]antlr[/\\]PainlessLexer\.java" checks="." />
<suppress files="org[/\\]elasticsearch[/\\]painless[/\\]antlr[/\\]PainlessParser(|BaseVisitor|Visitor)\.java" checks="." />

<!-- Hopefully temporary suppression of LineLength on files that don't pass it. We should remove these when we the
files start to pass. -->
Expand Down
12 changes: 6 additions & 6 deletions modules/lang-painless/ant.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
<include name="@{grammar}ParserVisitor.java" />
<include name="@{grammar}ParserBaseVisitor.java" />
</patternset>
<property name="output.path" location="src/main/java/org/elasticsearch/painless"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless/antlr"/>
<!-- delete parser and lexer so files will be generated -->
<delete dir="${output.path}">
<patternset refid="grammar.@{grammar}.patternset"/>
Expand All @@ -63,15 +63,15 @@
<local name="grammar.path"/>
<local name="output.path"/>
<property name="grammar.path" location="src/main/antlr"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless/antlr"/>
<!-- invoke ANTLR4 -->
<java classname="org.antlr.v4.Tool" fork="true" failonerror="true" classpathref="regenerate.classpath" taskname="antlr">
<sysproperty key="file.encoding" value="UTF-8"/>
<sysproperty key="user.language" value="en"/>
<sysproperty key="user.country" value="US"/>
<sysproperty key="user.variant" value=""/>
<arg value="-package"/>
<arg value="org.elasticsearch.painless"/>
<arg value="org.elasticsearch.painless.antlr"/>
<arg value="-o"/>
<arg path="${output.path}"/>
<arg path="${grammar.path}/@{grammar}Lexer.g4"/>
Expand All @@ -85,15 +85,15 @@
<local name="grammar.path"/>
<local name="output.path"/>
<property name="grammar.path" location="src/main/antlr"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless/antlr"/>
<!-- invoke ANTLR4 -->
<java classname="org.antlr.v4.Tool" fork="true" failonerror="true" classpathref="regenerate.classpath" taskname="antlr">
<sysproperty key="file.encoding" value="UTF-8"/>
<sysproperty key="user.language" value="en"/>
<sysproperty key="user.country" value="US"/>
<sysproperty key="user.variant" value=""/>
<arg value="-package"/>
<arg value="org.elasticsearch.painless"/>
<arg value="org.elasticsearch.painless.antlr"/>
<arg value="-no-listener"/>
<arg value="-visitor"/>
<!-- <arg value="-Xlog"/> -->
Expand All @@ -110,7 +110,7 @@
<local name="grammar.path"/>
<local name="output.path"/>
<property name="grammar.path" location="src/main/antlr"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless"/>
<property name="output.path" location="src/main/java/org/elasticsearch/painless/antlr"/>
<patternset id="grammar.@{grammar}.patternset">
<include name="@{grammar}Lexer.java" />
<include name="@{grammar}Parser.java" />
Expand Down
2 changes: 1 addition & 1 deletion modules/lang-painless/src/main/antlr/PainlessLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ EQR: '===';
NE: '!=';
NER: '!==';
BWAND: '&';
BWXOR: '^';
XOR: '^';
BWOR: '|';
BOOLAND: '&&';
BOOLOR: '||';
Expand Down
44 changes: 20 additions & 24 deletions modules/lang-painless/src/main/antlr/PainlessParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ expression
| TRUE # true
| FALSE # false
| NULL # null
| <assoc=right> extstart increment # postinc
| <assoc=right> increment extstart # preinc
| extstart # external
| <assoc=right> chain ( INCR | DECR ) # postinc
| <assoc=right> ( INCR | DECR ) chain # preinc
| chain # read
| <assoc=right> ( BOOLNOT | BWNOT | ADD | SUB ) expression # unary
| <assoc=right> LP decltype RP expression # cast
| expression ( MUL | DIV | REM ) expression # binary
Expand All @@ -103,39 +103,35 @@ expression
| expression ( LT | LTE | GT | GTE ) expression # comp
| expression ( EQ | EQR | NE | NER ) expression # comp
| expression BWAND expression # binary
| expression BWXOR expression # binary
| expression XOR expression # binary
| expression BWOR expression # binary
| expression BOOLAND expression # bool
| expression BOOLOR expression # bool
| <assoc=right> expression COND expression COLON expression # conditional
| <assoc=right> extstart ( ASSIGN | AADD | ASUB | AMUL | ADIV
| <assoc=right> chain ( ASSIGN | AADD | ASUB | AMUL | ADIV
| AREM | AAND | AXOR | AOR
| ALSH | ARSH | AUSH ) expression # assignment
;

extstart
: extprec
| extcast
| extvar
| extnew
| extstring
chain
: linkprec
| linkcast
| linkvar
| linknew
| linkstring
;

extprec: LP ( extprec | extcast | extvar | extnew | extstring ) RP ( extdot | extbrace )?;
extcast: LP decltype RP ( extprec | extcast | extvar | extnew | extstring );
extbrace: LBRACE expression RBRACE ( extdot | extbrace )?;
extdot: DOT ( extcall | extfield );
extcall: EXTID arguments ( extdot | extbrace )?;
extvar: identifier ( extdot | extbrace )?;
extfield: ( EXTID | EXTINTEGER ) ( extdot | extbrace )?;
extnew: NEW identifier ( ( arguments extdot? ) | ( ( LBRACE expression RBRACE )+ extdot? ) );
extstring: STRING (extdot | extbrace )?;
linkprec: LP ( linkprec | linkcast | linkvar | linknew | linkstring ) RP ( linkdot | linkbrace )?;
linkcast: LP decltype RP ( linkprec | linkcast | linkvar | linknew | linkstring );
linkbrace: LBRACE expression RBRACE ( linkdot | linkbrace )?;
linkdot: DOT ( linkcall | linkfield );
linkcall: EXTID arguments ( linkdot | linkbrace )?;
linkvar: identifier ( linkdot | linkbrace )?;
linkfield: ( EXTID | EXTINTEGER ) ( linkdot | linkbrace )?;
linknew: NEW identifier ( ( arguments linkdot? ) | ( ( LBRACE expression RBRACE )+ linkdot? ) );
linkstring: STRING (linkdot | linkbrace )?;

arguments
: ( LP ( expression ( COMMA expression )* )? RP )
;

increment
: INCR
| DECR
;
Loading