- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Type 1 1 型文法 如果文法G中规则呈如下形式 xUy::=xuy (U∈VN , u∈V+ , x , y∈V*) 则称G为1型文法,所产生的相应语言为1型语言。由于利用规则将U替换成u时,必须考虑U在上下(前后)文x…y中出现的情况,即与它的上下(前后)文有关,故又称上下文有关文法。 Type 1 例 G3=(VN , VT , P , S) 其中 VN ={S , B, C} VT={a , b , c} P: S ::= aSBC S ::= aBC CB ::= BC aB ::= ab bB ::= bb bC ::= bc cC ::= cc 这是一个1型语法,它共包含7条规则。实际上,,它描述了如下语言: L(G3)={anbncn|n≥1} Type 2 2 型文法 如果文法G中规则呈如下形式 U::=u (U∈VN , u∈V*) 则称G为2型文法,由它所产生的语言称2型语言。由于利用规则将U替换成u时,与其上下(前后)文无关,即无需考虑U在上下文中出现情况,所以又称这种方法为上下文无关文法,所定义的语言称上下文无关语言。 2型文法是最常用的一类文法。 下推自动机 Type 3 3 型文法 如果文法G中规则呈如下形式 U::=a 或 U::= Wa (U、W∈VN ,a∈VT) 则称G为3型文法,或正则(或称正规)文法,由它所产生的语言称3型语言,或正则(或正规)语言。3型文法也有采用形如U::=aW的规则作为其定义的,这是一种右线性文法,而前面那种形式的3型文法则是左线性的。 有穷自动机 例 算术运算符 ::= + | - | * | / |↑ Context-free Grammar for TINY TINY语言的上下文无关文法 Context-free Grammar for TINY program - stmt-sequence stmt-sequence - stmt-sequence ; statement | statement statement - if-stmt | repeat-stmt | assign-stmt| read-stmt | write-stmt if-stmt - if exp then stmt-sequence end | if exp then stmt-sequence else stmt-sequence end repeat-stmt - repeat stmt-sequence until exp assign-stmt - identifier := exp read-stmt - read identifier write-stmt - write exp exp - simple-exp comp-op simple-exp | simple-exp comp-op - | = simple-exp - simple-exp addop term | term addop - + | - term - term mulop factor | factor mulop - * | / factor - (exp) | number | identifier typedef enum {StmtK,ExpK} NodeKind; typedef enum {IfK,RepeatK,AssignK,ReadK,WriteK} StmtKind; typedef enum {OpK,ConstK,IdK} ExpKind; /* ExpType is used for type checking */ typedef enum {Void,Integer,Boolean} ExpType; #define MAXCHILDREN 3 typedef struct treeNode { struct treeNode * child[MAXCHILDREN]; struct treeNode * sibling; int lineno; NodeKind nodekind; union { StmtKind stmt; ExpKind exp;} kind; union { TokenType op; int val; char * name; } attr; E
文档评论(0)