python实现及其解释器应用:实现语法支持
23分钟前来源:CSDN博客
第九部分开始了对语言特性的支持,根据语言定义BNF:
program→compound_statement DOT
compound_statement→BEGIN statement_list END
statement_list→statement | statement SEMI statement_list
statement→compound_statement | assignment_statement | empty
assignment_statement→variable ASSIGN expr
variable→ID
empty→
expr→term ((PLUS | MINUS) TERM)
term→factor ((MUL | DIV) factor)
factor→PLUS factor |MINUS factor | INTEGER | LPAREN expr RPAREN | variable
知识点梳理 计算机程序语言的一些基本知识,譬如什么是表达式(expression),什么是语句(statement)。 符号表。由于引入了变量,如何再次访问到这些变量呢?把他们放到符号表中,这里只有一个全局符号表GLOBAL_SCOPE 新的grammar规则设计的理论知识其实就是LL(1)。什么是LL(1)? 练习 1. 关键字的大小写敏感问题在读取id的时候,根据ID的大写字符串去关键字中搜索,如果有则返回大写关键字,也就是说不管程序中的关键字是大写还是小写,内部始终是用的大写的方式。
token = RESERVED_KEYWORDS.get(result.upper, Token(ID, result))2. 把’/’转换成关键字div RE