Skip to content

Commit 44394bb

Browse files
committed
refactor: clean parser files
1 parent 7d61258 commit 44394bb

File tree

2 files changed

+14
-36
lines changed

2 files changed

+14
-36
lines changed

src/main/kotlin/com/github/xepozz/php_opcodes_language/language/parser/PHPOp.bnf

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,21 @@
1313
tokenTypeClass="com.github.xepozz.php_opcodes_language.language.psi.PHPOpTokenType"
1414

1515
tokens = [
16-
LBRACE = "LBRACE {"
17-
RBRACE = "RBRACE }"
1816
LPAREN = "LPAREN ("
1917
RPAREN = "RPAREN )"
20-
LBRACKET = "LBRACKET ["
21-
RBRACKET = "RBRACKET ]"
2218
COMMENT = "COMMENT"
2319
EOL = "EOL"
24-
SYMBOL = "SYMBOL"
2520
IDENTIFIER = "IDENTIFIER"
2621
NUMBER = "NUMBER"
2722
DOLLAR_SIGN = "DOLLAR_SIGN"
2823
EQUALS_SIGN = "EQUALS_SIGN"
2924
TEXT = "TEXT"
3025
IDENTIFIER = "IDENTIFIER"
3126
COLON = "COLON"
27+
DASH = "DASH"
3228
]
3329
}
3430

35-
// Top level structure
3631
phpOpFile ::= item_*
3732

3833
private item_ ::= block | COMMENT | EOL
@@ -53,7 +48,7 @@ instruction_name ::= IDENTIFIER
5348

5449
argument ::= expr | paren_expr
5550

56-
expr ::= var_name | string_literal | NUMBER | IDENTIFIER paren_expr | IDENTIFIER | '='
51+
expr ::= var_name | string_literal | NUMBER | IDENTIFIER paren_expr | IDENTIFIER | EQUALS_SIGN
5752

5853
string_literal ::= TEXT
5954
{
@@ -73,5 +68,5 @@ live_range ::= 'LIVE RANGES:' live_range_statements
7368
live_range_statements ::= (live_range_statement | EOL)*
7469

7570
live_range_statement ::= NUMBER COLON live_range_range LPAREN live_type RPAREN
76-
live_range_range ::= NUMBER '-' NUMBER
71+
live_range_range ::= NUMBER DASH NUMBER
7772
live_type::= IDENTIFIER (SLASH IDENTIFIER)?

src/main/kotlin/com/github/xepozz/php_opcodes_language/language/parser/PHPOp.flex

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,22 @@ import java.util.Stack;
1818
%eof{ return;
1919
%eof}
2020

21-
%state YYINITIAL
22-
%state IN_BLOCK
2321

24-
// Common macros
2522
WHITESPACE = [ \t\f]
2623
NEWLINE = \r\n|\r|\n
2724
COMMENT = ";"[^\n]*
2825

29-
// Identifier patterns
3026
IDENTIFIER = [_a-zA-Z][a-zA-Z0-9_\-\\]*
3127
NUMBER = [0-9]+
32-
//TEXT = [^\s{\}(\)\[\]<\>\|\#\'\`\-\+\?\@][^\s{\}(\)\[\]<\>]*
33-
SYMBOL = [\-\+\~\?\<\>\@]
34-
3528
QUOTTED_STRING = "\""(\\\"|[^\"])*"\""
3629

37-
// Special symbols
38-
LBRACE = "{"
39-
RBRACE = "}"
4030
LPAREN = "("
4131
RPAREN = ")"
42-
LBRACKET = "["
43-
RBRACKET = "]"
4432
DOLLAR_SIGN = "$"
4533
EQUALS_SIGN = "="
4634
COLON = ":"
4735
SLASH = "/"
36+
DASH = "-"
4837

4938
%{
5039
private Stack<Integer> stack = new Stack<>();
@@ -59,34 +48,28 @@ public void yypopState() {
5948
}
6049
%}
6150

62-
%%
6351

64-
<YYINITIAL, IN_BLOCK> {
65-
{LBRACE} { yypushState(IN_BLOCK); return PHPOpTypes.LBRACE; }
66-
{RBRACE} { yypopState(); return PHPOpTypes.RBRACE; }
52+
%state YYINITIAL
53+
54+
%%
6755

68-
// Special symbols
56+
<YYINITIAL> {
6957
{LPAREN} { return PHPOpTypes.LPAREN; }
7058
{RPAREN} { return PHPOpTypes.RPAREN; }
71-
{LBRACKET} { return PHPOpTypes.LBRACKET; }
72-
{RBRACKET} { return PHPOpTypes.RBRACKET; }
7359
{DOLLAR_SIGN} { return PHPOpTypes.DOLLAR_SIGN; }
7460
{EQUALS_SIGN} { return PHPOpTypes.EQUALS_SIGN; }
7561

76-
// Common elements
77-
{IDENTIFIER} { return PHPOpTypes.IDENTIFIER; }
78-
{COLON} { return PHPOpTypes.COLON; }
79-
{SLASH} { return PHPOpTypes.SLASH; }
62+
{IDENTIFIER} { return PHPOpTypes.IDENTIFIER; }
63+
{COLON} { return PHPOpTypes.COLON; }
64+
{SLASH} { return PHPOpTypes.SLASH; }
65+
{DASH} { return PHPOpTypes.DASH; }
8066
{NUMBER} { return PHPOpTypes.NUMBER; }
81-
{SYMBOL} { return PHPOpTypes.SYMBOL; }
82-
// {TEXT}|{QUOTTED_STRING} { return PHPOpTypes.TEXT; }
83-
{QUOTTED_STRING} { return PHPOpTypes.TEXT; }
67+
{QUOTTED_STRING} { return PHPOpTypes.TEXT; }
8468

85-
// Whitespace and comments
8669
{WHITESPACE} { return TokenType.WHITE_SPACE; }
8770
{NEWLINE} { return PHPOpTypes.EOL; }
8871
{COMMENT} { return PHPOpTypes.COMMENT; }
8972
}
9073

9174
// Catch any other character
92-
[^] { return TokenType.BAD_CHARACTER; }
75+
[^] { return TokenType.BAD_CHARACTER; }

0 commit comments

Comments
 (0)