Skip to content
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

added modifier keywords support for mirah parser #21

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
added missing synchronized modifier
  • Loading branch information
vkozyr committed Apr 27, 2015
commit 9bc71c2f87cc1a70b3e6a95b89079cb079606915
1 change: 1 addition & 0 deletions src/mirahparser/impl/Mirah.mmeta
Original file line number Diff line number Diff line change
@@ -714,6 +714,7 @@ parser MirahParser {
$ACC_VOLATILE {"VOLATILE"} |
$ACC_NATIVE {"NATIVE"} |
$ACC_DEFAULT {"DEFAULT"} |
$ACC_SYNCHRONIZED {"SYNCHRONIZED"} |
$ACC_TRANSIENT {"TRANSIENT"}
)
-> ^(Modifier txt);
2 changes: 2 additions & 0 deletions src/mirahparser/impl/MirahLexer.java
Original file line number Diff line number Diff line change
@@ -667,6 +667,8 @@ private Tokens processFirstChar(MirahLexer l, Input i) {
type = Tokens.tSelf;
} else if (i.consume("uper")) {
type = Tokens.tSuper;
} else if (i.consume("ynchronized")) {
type = Tokens.tACC_SYNCHRONIZED;
} else {
type = Tokens.tIDENTIFIER;
}
1 change: 1 addition & 0 deletions src/mirahparser/impl/Tokens.java
Original file line number Diff line number Diff line change
@@ -75,6 +75,7 @@ public enum Tokens {
tACC_NATIVE,
tACC_DEFAULT,
tACC_TRANSIENT,
tACC_SYNCHRONIZED,
// ClassVar must be first after the keywords, followed by other
// identifierish tokens.
tClassVar,
2 changes: 2 additions & 0 deletions test/test_mirah.rb
Original file line number Diff line number Diff line change
@@ -368,6 +368,8 @@ def test_modifiers
"abstract def +; 1; end")
assert_parse("[Script, [[StaticMethodDefinition, [SimpleString, puts], [Arguments, [RequiredArgumentList], [OptionalArgumentList], null, [RequiredArgumentList], null], null, [], [AnnotationList], [ModifierList, [Modifier:FINAL], [Modifier:PROTECTED]]]]]",
"final protected def self.puts; end")
assert_parse("[Script, [[StaticMethodDefinition, [SimpleString, puts], [Arguments, [RequiredArgumentList], [OptionalArgumentList], null, [RequiredArgumentList], null], null, [], [AnnotationList], [ModifierList, [Modifier:FINAL], [Modifier:SYNCHRONIZED]]]]]",
"final synchronized def self.puts; end")
assert_parse("[Script, [[ConstantAssign, [SimpleString, A], [VCall, [SimpleString, b]], [AnnotationList], [ModifierList, [Modifier:FINAL]]]]]", "final A = b")
assert_parse("[Script, [[FieldAssign, [SimpleString, a], [VCall, [SimpleString, b]], [AnnotationList], [ModifierList, [Modifier:PROTECTED]]]]]", "protected @a = b")
assert_parse("[Script, [[FieldAssign, [SimpleString, a], [VCall, [SimpleString, b]], [AnnotationList], [ModifierList, [Modifier:FINAL], [Modifier:TRANSIENT]], static]]]", "final transient @@a = b")