EBNF To BNF
- Ident 转变为非终结符ident,然后添加ident : TIDENTIFIER
'const'
->TCONST
- {E}-> X = | X E,例如:
ConstDecl → 'const' BType ConstDef { ',' ConstDef } ';'
转变为ConstDecl : TCONST BType ConstDef COMMAConstDefSemicolon COMMAConstDefSEMICOLON : | COMMAConstDefSemicolon TCOMMA ConstDef TSEMICOLON
其中COMMA为逗号,新增加的非终结符为*{}里面的终结符的简写字符大写*+*{}里面的非终结符*+*{}里面的终结符的简写字符大写*
'int'
->TYINT
'='
->TEQUAL
[Blockitem]
->EXBlockitem : | EXBlockitem Blockitem
- 新增终结符break和continue为TBREAK和TCONTINUE
Ident
-> ident,在tiny里面在flex用的正则,而在SysY用的语义- 增加
IntConst
,需要根据后面的语义增加非终结符的语法 - 新增 ‘!’ -> TEXCLAIM
- 新增
&&
-> TLOGAND - 新增
||
-> TLOGOR
欢迎在评论区中进行批评指正,转载请注明来源,如涉及侵权,请联系作者删除。