Skip to content

Commit

Permalink
Grammar improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanjermakov committed Jun 4, 2023
1 parent bd964ba commit a0b700e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 30 deletions.
7 changes: 2 additions & 5 deletions src/grammar.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,9 @@ expr ::= sub-expr infix-operator sub-expr
| sub-expr
;

sub-expr ::= unary-expr
| operand
;

unary-expr ::= prefix-op operand
sub-expr ::= prefix-op operand
| operand postfix-op
| operand
;

operand ::= STRING
Expand Down
14 changes: 3 additions & 11 deletions src/grammar.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,17 +98,6 @@
},
{
"name": "sub-expr",
"branches": [
[
"unary-expr"
],
[
"operand"
]
]
},
{
"name": "unary-expr",
"branches": [
[
"prefix-op",
Expand All @@ -117,6 +106,9 @@
[
"operand",
"postfix-op"
],
[
"operand"
]
]
},
Expand Down
30 changes: 16 additions & 14 deletions src/parser/parser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,24 @@ describe('parser', () => {
})

it('parse unary-expr', () => {
const rule = parse('-3', 'unary-expr')
const rule = parse('-3', 'expr')
expect(compactToken(rule!)).toEqual({
'name': 'unary-expr',
'nodes': [
{
'name': 'prefix-op',
'nodes': [{
'name': 'minus', 'value': '-'
}]
},
{
'name': 'operand',
'nodes': [{
'name': 'number', 'value': '3'
'name': 'expr',
'nodes': [{
'name': 'sub-expr', 'nodes': [
{
'name': 'prefix-op',
'nodes': [{
'name': 'minus', 'value': '-'
}]
},
{
'name': 'operand',
'nodes': [{
'name': 'number', 'value': '3'
}]
}]
}]
}]
})
})

Expand Down

0 comments on commit a0b700e

Please sign in to comment.