Files
2025-02-Compiler/2.md
2025-09-09 14:12:03 +09:00

1.2 KiB

Lexical Analysis

포트란은 모든 whitespace를 지움.

do 5 I = 1.25

do 5 I = 1,25

Tokens

대표적인 토큰의 예시

  • Identifiers
  • Keywords
  • Integers
  • Floating-points
  • Symbols
  • Strings

하기 위해서 하는 것

  • Specification

확실하게 명세를 해줘야함.

  • Recognition

DFA를 이용해서 패턴 매칭

  • Automation

RE로 부터 DFA를 generate해야함

Lex라는 툴을 이용

그러나 내부적으로는 Tompson's construction (RE -> NFA), Subset Construction(NFA -> DFA)도 알아야함

Specification

Regular Expression

Multiple Matches

elsex = 0이라는 코드에서

else / x / = / 0 또는

elsex / = 0 두가지 선택지가 있음. 둘 중 하나를 무조건 골라야함. 이때 가장 긴 토큰이 선택된다.

  • elsexelse보다 더 길어서 elsex가 선택됨.

만약에 두 경우가 모두 똑같다면 토큰 종류의 우선순위에 따라 선택된다.

  • KeywordIdentifier가 더 높음.

Recognition

FSA를 이용함.

DFA와 NFA의 표현력은 동일하나 DFA는 편하게 구현할 수 있다는 장점이 있음. NFA는 RE로부터 쉽게 변환가능하다는 장점이 있음.

Lexical ANalysis