제 렉스 파서로 ply를 사용하고 있습니다. 내 사양은 다음과 같습니다Ply Lex 구문 분석 문제
"while n <= 0 then h = 1"
그것은 출력 다음 제공합니다 : 나는 다음과 같은 문자열을 구문 분석 할 때
t_WHILE = r'while'
t_THEN = r'then'
t_ID = r'[a-zA-Z_][a-zA-Z0-9_]*'
t_NUMBER = r'\d+'
t_LESSEQUAL = r'<='
t_ASSIGN = r'='
t_ignore = r' \t'
그런 다음 토큰을 인식하지 못하는
LexToken(ID,'while',1,0)
LexToken(ID,'n',1,6)
LexToken(LESSEQUAL,'<=',1,8)
LexToken(NUMBER,'0',1,11)
LexToken(ID,'hen',1,14) ------> PROBLEM!
LexToken(ID,'h',1,18)
LexToken(ASSIGN,'=',1,20)
LexToken(NUMBER,'1',1,22)
, 대신 식별자로 "암탉"을 사용합니다.
아이디어가 있으십니까?
좋아, 문제를 발견했다. – Karan
사실, 나는 t_ignore = r "\ t"때문에 "t"라는 글자를 무시하고있는 것을 발견했다. (왜 그런지 물어 보지 마라!). 그래서 그것을 제거하고 이제 "다음"을 토큰으로 사용하기 시작합니다. – Karan
@Karan :'r '\ t''은 * raw * 문자열입니다. 내 생각 엔'\ t'가 이스케이프 될 수 없었고 처음'r' =>'t_ignore = '\ t''을 제거했다면 효과가있었습니다. – ereOn