parse
-
[Python] PLY (Python Lex-Yacc) 정리 - YaccProgramming Language/Python 2021. 4. 28. 17:22
Lexer 에 대한 내용은 Lex 정리 문서 를 참조 해주세요. 2. parse 언어 문법을 파싱하기 위해서 yacc.py 를 이용한다. YACC(Yet Another Compiler Compiler) 은 LR-parsing / shift-reduce parsing 으로 알려진 분석 기술을 사용한다. LR-parsing 입력 기호들을 읽어가면서 기호들을 reduce 하여 시작 기호로 반환되는 상향식(bottom-up) 구문 분석 기법이다. stack 과 input buffer 를 이용해서 분석이 가능하다 참고링크 : https://en.wikipedia.org/wiki/LR_parser syntax 는 BNF(Backers Naur From) 구문으로 표기한다. 예를 들어, 간단한 산술 계산식을 분석 하..
-
[Python] PLY (Python Lex-Yacc) 정리 - LexProgramming Language/Python 2021. 4. 28. 10:08
YACC 에 대한 내용은 YACC 정리 문서 를 참조 해주세요. 1. Lex lex.py 를 이용한다. 문자열을 tokenize 할 때 사용한다. 1.1. The tokens list (tokens 리스트) tokens 라는 list 객체에 lexer 에서 사용 될 토큰의 이름을 모두 정의해야 한다. tokens = ( 'NUMBER', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'LPAREN', 'RPAREN', ) 1.2. Specification of tokens (토큰의 명세) prefix (t_ ) 를 각 토큰이름 앞에 사용해서 rule 을 정의 한다. rule 은 re 모듈의 정규 표현식으로 정의 한다. re 컴파일러는 re.VERBOSE 옵션을 사용한다. (multili..