**
*, /
+, -
.EQ., .NE., .LT., .LE., .GT., .GE.
.NOT.
.AND.
.OR.
<primary-expression> ::= <identifier> | <constant> | <string-literal> | `('expression`)'
<exponentiation-expression> ::= <primary-expression>
| <primary-expression>**<exponentiation-expression>
<multiplicative-expression> ::= <primary-expression>
| <multiplicative-expression>( * | / )<primary-expression>
<additive-expression> ::= <multiplicative-expression>
| <additive-expression>( + | - )<multiplicative-expression>
<relational-expression> ::= <additive-expression> |
<relational-expression><equality-operator><additive-expression>
<relational-operator> ::= .EQ. | .NE. | .LT. | .LE. | .GT. | .GE. | .EQ. | .NE.
<logical-NOT-expression> ::= <relational-expression>
| .NOT.<logical-NOT-expression>
<logical-AND-expression> ::= <logical-NOT-expression>
| <logical-NOT-expression>.AND.<logical-AND-expression>
<logical-OR-expression> ::= <logical-AND-expression>
| <logical-AND-expression>.OR.<logical-OR-expression>
산술연산 → 관계연산 → 논리연산 의 순서로 진행되기 때문에 EBNF 식 역시 우선순위 순서대로 정리하였음
1️⃣ <primary-expression>
<identifier>: x
<constant>: 42
<string-literal>: "hello"
('expression'): (3 + 4)
2️⃣ <exponentiation-expression>
<primary-expression>**<exponentiation-expression>
<primary-expression>**<primary-expression>
<constant>**<constant>
2**3
3️⃣ <multiplicative-expression>