词法分析

词法分析原理
将源程序看做是字符流并进行切割划分,每一个部分就叫做记号或单词
源程序:1234if (x > 5) y = "hello";else z = 1;
转换成记号:1234IF LPAREN IDENT(x) GT INT(5) RPAREN IDENT(y) ASSING STRING("hello") SEMICOLONELSE IDENT(z) ASSING INT(1) SEMICOLON EOF(结束标志)
记号数据结构
|
|
源程序在转换成记号前就会得到相应的结构体token
比如 if(x > 5) 得到以下 token
- token{k = IF , lexeme = 0};
- token{k = LPAREN , lexeme = 0};
- token{k = IDENT , lexeme = “x”};
- token{k = GT , lexeme = 0};
- token{k = INT , lexeme = 5};
- token{k = RPAREN, lexeme = 0};
- token{k = EOF, lexeme = 0};
小结
词法分析器的任务:字符流到记号流
- 字符流:和被编译的语言密切相关 (ASCII , Unicode等)
- 记号流: 编译器内部定义的数据结构,编码所识别出的词法单元

