Skip to content

Commit 029c899

Browse files
committed
Fixed parsing of "func()[0]"
1 parent 32ea355 commit 029c899

File tree

16 files changed

+91
-112
lines changed

16 files changed

+91
-112
lines changed

.idea/compiler.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/parser/LeekScriptParser.java

Lines changed: 9 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/psi/LSMemberExpression.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

gen/com/plopiplop/leekwars/psi/LSPrefixExpression.java

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/psi/LSSuffixExpression.java

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/psi/LSTypes.java

Lines changed: 0 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/psi/LSVisitor.java

Lines changed: 0 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/psi/impl/LSMemberExpressionImpl.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

gen/com/plopiplop/leekwars/psi/impl/LSPrefixExpressionImpl.java

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/plopiplop/leekwars/psi/impl/LSSuffixExpressionImpl.java

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/META-INF/plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<idea-plugin version="2">
22
<id>com.plopiplop.leekwars</id>
33
<name>LeekScript</name>
4-
<version>1.1.1</version>
4+
<version>1.1.2</version>
55
<vendor>bjansen</vendor>
66

77
<description><![CDATA[

resources/grammar/LeekScript.bnf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,10 @@ left suffixExpression ::= ('--' | '++')
174174

175175
functionExpression ::= 'function' '(' formalParameterList? ')' block {pin=1}
176176

177-
private leftHandSideExpression ::= methodCall | memberExpression
177+
private leftHandSideExpression ::= memberExpression
178178

179179
methodCall ::= referenceExpression arguments {methods=[getNbArguments]}
180-
memberExpression ::= (primaryExpression | functionExpression) ('[' singleExpression ']')*
180+
private memberExpression ::= (methodCall | primaryExpression | functionExpression) ('[' singleExpression ']')*
181181
primaryExpression ::= referenceExpression | literal | arrayLiteral | '(' singleExpression ')'
182182

183183
eos ::= ';'

test/com/plopiplop/leekwars/parser/ParserTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ public void testExpressions() {
1212
doTest(true);
1313
}
1414

15+
public void testMethodCall() {
16+
doTest(true);
17+
}
18+
1519
@Override
1620
protected String getTestDataPath() {
1721
return "testdata/parser";

testdata/parser/Expressions.txt

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,31 @@ LeekScript Expressions.lks
77
LSLogicOrExpressionImpl(LOGIC_OR_EXPRESSION)
88
LSCompareExpressionImpl(COMPARE_EXPRESSION)
99
LSPrefixExpressionImpl(PREFIX_EXPRESSION)
10-
LSMemberExpressionImpl(MEMBER_EXPRESSION)
11-
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
12-
LSLiteralImpl(LITERAL)
13-
PsiElement(true)('true')
10+
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
11+
LSLiteralImpl(LITERAL)
12+
PsiElement(true)('true')
1413
PsiWhiteSpace(' ')
1514
PsiElement(==)('==')
1615
PsiWhiteSpace(' ')
1716
LSPrefixExpressionImpl(PREFIX_EXPRESSION)
18-
LSMemberExpressionImpl(MEMBER_EXPRESSION)
19-
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
20-
LSLiteralImpl(LITERAL)
21-
PsiElement(number)('1')
17+
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
18+
LSLiteralImpl(LITERAL)
19+
PsiElement(number)('1')
2220
PsiWhiteSpace(' ')
2321
PsiElement(||)('||')
2422
PsiWhiteSpace(' ')
2523
LSCompareExpressionImpl(COMPARE_EXPRESSION)
2624
LSPrefixExpressionImpl(PREFIX_EXPRESSION)
27-
LSMemberExpressionImpl(MEMBER_EXPRESSION)
28-
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
29-
LSLiteralImpl(LITERAL)
30-
PsiElement(false)('false')
25+
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
26+
LSLiteralImpl(LITERAL)
27+
PsiElement(false)('false')
3128
PsiWhiteSpace(' ')
3229
PsiElement(==)('==')
3330
PsiWhiteSpace(' ')
3431
LSPrefixExpressionImpl(PREFIX_EXPRESSION)
35-
LSMemberExpressionImpl(MEMBER_EXPRESSION)
36-
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
37-
LSLiteralImpl(LITERAL)
38-
PsiElement(number)('2')
32+
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
33+
LSLiteralImpl(LITERAL)
34+
PsiElement(number)('2')
3935
PsiElement())(')')
4036
PsiWhiteSpace(' ')
4137
LSThenBlockImpl(THEN_BLOCK)

testdata/parser/MethodCall.lks

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
var plop = coin()[0];

testdata/parser/MethodCall.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
LeekScript MethodCall.lks
2+
LSVariableStatementImpl(VARIABLE_STATEMENT)
3+
LSModifierImpl(MODIFIER)
4+
PsiElement(var)('var')
5+
PsiWhiteSpace(' ')
6+
LSVariableDeclarationImpl(VARIABLE_DECLARATION)
7+
PsiElement(identifier)('plop')
8+
PsiWhiteSpace(' ')
9+
LSInitialiserImpl(INITIALISER)
10+
PsiElement(=)('=')
11+
PsiWhiteSpace(' ')
12+
LSSingleExpressionImpl(SINGLE_EXPRESSION)
13+
LSPrefixExpressionImpl(PREFIX_EXPRESSION)
14+
LSMethodCallImpl(METHOD_CALL)
15+
LSReferenceExpressionImpl(REFERENCE_EXPRESSION)
16+
PsiElement(identifier)('coin')
17+
LSArgumentsImpl(ARGUMENTS)
18+
PsiElement(()('(')
19+
PsiElement())(')')
20+
PsiElement([)('[')
21+
LSSingleExpressionImpl(SINGLE_EXPRESSION)
22+
LSPrefixExpressionImpl(PREFIX_EXPRESSION)
23+
LSPrimaryExpressionImpl(PRIMARY_EXPRESSION)
24+
LSLiteralImpl(LITERAL)
25+
PsiElement(number)('0')
26+
PsiElement(])(']')
27+
LSEosImpl(EOS)
28+
PsiElement(;)(';')

0 commit comments

Comments
 (0)