1. C언어의 Expression 에 대한 EBNF를 참고하여 포트란 Expression의 EBNF를 정리하고 ‘’자세히” 설명하시오

포트란 표현식

**
*, /
+, -
.EQ., .NE., .LT., .LE., .GT., .GE.
.NOT.
.AND.
.OR.

포트란 표현식 EBNF

<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>