查看“︁終結符與非終結符”︁的源代码
←
終結符與非終結符
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{NoteTA |G1=IT }} {{RoughTranslation}} '''終結符'''和'''非終結符'''在[[電腦科學]]和[[語言學]]的领域是用來指定[[推導規則]]的元素。在某個[[形式語法]]之中,終結符和非終結符是兩個[[不交集|不交]]的集合。 == 終結符 == ''終結符''是一個[[形式語言]]的基本符號。就是說,它們能在一個形式語法的推導規則的輸入或輸出字符串存在,而且它們不能被分解成更小的單位。確切地說,一個語法的規則不能改變終結符。例如說,下面的語法有兩個規則: #''x'' -> ''xa'' #''x'' -> ''ax'' 在這種語法之中,''a''是一個終結符,因為沒有規則可以把''a''變成別的符號。不過,有兩個規則可以把''x''變成別的符號,所以''x''是非終結符。一個形式語法所推導的形式語言必須完全由終結符構成。 == 非終結符 == 非終結符是可以被取代的符號。一個形式文法中必須有一個起始符號;這個起始符號屬於非終結符的集合。 在[[上下文無關文法]]中,每个推导规则的左边只能有一个非终结符而不能有两个以上的非终结符或终结符。并非所有的語言都可以被上下文無關文法產生。 == 推導規則 == 一种语法的定义由推导规则构成。每个规则规定什么[[词位]]可以重写为什么别的词位。这些规则可以用来剖析字符串,也可以用来产生字符串。每个规则有左边和右边。左边有可以被取代的字符串,而右边有可以取代左邊的字符串。规则的写法一般为左边<math>\rarr</math>右边。比如,z0 → z1 这个规则规定 z0 可以重写为 z1。左边为一个非终结符,但是右边不一定是个终结符。 == 例子 == 下面的形式文法代表一个整数。整数可能是有符号,就是说,可能是负数。下面使用[[巴科斯范式]]的变种来表示: <integer> ::= ['-'] <digit> {<digit>} <digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' 在这个例子之中,符号 (-,0,1,2,3,4,5,6,7,8,9) 都是终结符,而 <digit> 和 <integer> 都是非终结符。 == 参见 == * [[形式文法]] * [[形式语言]] * [[推导规则]] * [[语法分析器]] == 引用 == {{reflist}} == 参考文献 == {{refbegin}} * Aho, Lam, Sethi, & Ullman, ''Compilers: Principles, Techniques, and Tools'', second edition; Pearson/Addison-Wesley, 2006. Section 2.2 (beginning on p. 42). Note that this section only discusses context-free grammars. * http://osr507doc.sco.com/en/tools/Yacc_specs_symbols.html {{Wayback|url=http://osr507doc.sco.com/en/tools/Yacc_specs_symbols.html |date=20200212002215 }} {{refend}} [[Category:形式语言]]
该页面使用的模板:
Template:NoteTA
(
查看源代码
)
Template:Refbegin
(
查看源代码
)
Template:Refend
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:RoughTranslation
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
終結符與非終結符
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息