跳转到内容

语法分析:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Green1989~zhwiki留言 | 贡献
无编辑摘要
InternetArchiveBot留言 | 贡献
补救4个来源,并将0个来源标记为失效。) #IABot (v2.0.8
 
(未显示25个用户的37个中间版本)
第1行: 第1行:
{{NoteTA|G1=IT}}
{{Cleanup |time=2008-07-25T07:52:28+00:00 }}
{{语法分析器}}
在计算机科学和语言学中,语法分析(parsing)是根据某种给定的[[形式文法]](formal grammar)对输入的单词(token)序列进行分析并确定其语法结构的一种过程。而语法分析器通常是以编译器或解释器的组件出现的,它的作用是从输入中分析出其结构并将其转换为在后续处理过程中更易于访问的数据结构(一般是树类的数据结构),并检测可能存在的语法错误。语法分析器通常使用一个[[词法分析器]](lexer)从输入的字符流中分离出一个个的‘单词’,并将单词流作为其输入。在实际开发中,语法分析器可以手工编写,也可以使用自动生成程序(如yacc之类)根据一个使用[[巴科斯范式]]描述的形式文法来生成其高级语言代码。
在[[计算机科学]]和[[语言学]]中,'''语法分析'''({{lang-en|syntactic analysis}},也叫 {{lang|en|parsing}})是根据某种给定的[[形式文法]]对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。


'''语法分析器'''(parser)通常是作为[[编译器]]或[[解释器]]的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是[[语法分析树]]、[[抽象语法树]]等层次化的数据结构)。语法分析器通常使用一个独立的[[词法分析|词法分析器]]从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。
[[Category:编译原理]]


== 语法分析器分类 ==
[[ca:Analitzador sintàctic]]
语法分析器的任务主要是确定是否可以以及如何从语法的起始符号推导出输入符号串(输入文本),主要可以通过两种方式完成:
[[cs:Parser]]
* [[自顶向下分析]]:根据[[形式语法]]规则,在[[语法分析树]]的自顶向下展开中搜索输入符号串可能的最左推导。单词按从左到右的顺序依次使用。
[[de:Parser]]
* [[自底向上分析]]:语法分析器从现有的输入符号串开始,尝试将其根据给定的形式语法规则进行改写,最终改写为语法的起始符号。
[[en:Parsing]]

[[es:Analizador sintáctico]]
== 参考文献 ==
[[fa:تحلیل‌گر نحوی]]
{{Reflist}}
[[fr:Décomposition analytique]]
{{refbegin}}
[[ko:구문 분석]]
; 书籍
[[hr:Parsiranje]]
* Chapman, Nigel P., [http://books.google.com/books?id=nEA9AAAAIAAJ&printsec=frontcover ''LR Parsing: Theory and Practice'']{{Wayback|url=http://books.google.com/books?id=nEA9AAAAIAAJ&printsec=frontcover |date=20130926200606 }}, Cambridge University Press, 1987. ISBN 0-521-30413-X.
[[it:Parsing]]
* Grune, Dick; Jacobs, Ceriel J.H., [http://www.cs.vu.nl/~dick/PTAPG.html ''Parsing Techniques - A Practical Guide'']{{Wayback|url=http://www.cs.vu.nl/~dick/PTAPG.html |date=20100722213544 }}, VU University Amsterdam, Amsterdam, The Netherlands. Originally published by Ellis Horwood, Chichester, England, 1990; ISBN 0-13-651431-6.
[[hu:Elemző (informatika)]]
{{refend}}
[[mk:Парсер]]

[[nl:Parser]]
== 外部連結 ==
[[ja:構文解析]]
* [https://web.archive.org/web/20100312034538/http://code.google.com/p/nobjectiveast/ Objective-C parser written in C#]
[[pl:Parser]]
* [https://web.archive.org/web/20121111022534/http://www.hwaci.com/sw/lemon/ The Lemon LALR Parser Generator]
[[pt:Análise sintática (computação)]]

[[ro:Parsare]]
== 参见 ==
[[ru:Синтаксический анализ]]
{{Portal box|计算机科学|语言学}}
[[sr:Парсер]]
[[fi:Jäsennin]]
* [[词法分析]]

[[sv:Parser]]
{{-}}
[[ta:இலக்கணப் பாகுபடுத்தி]]
{{自然语言处理}}
[[tr:Metin ayrıştırıcı]]
{{Computer Science}}
[[uk:Синтаксичний аналіз]]

词法分析器阶段的任务:从左至右逐个读入源程序,对源程序的字符流进行扫描和分析,识别出是否为该类别程序语言的保留字,其他的单词则标为用户定义的标识符。另外,在词法分析阶段,可以分析程序的用户自定义的标识符是否符合构词规则。并表标识出行号位置。
[[Category:编译原理]]
[[Category:分析演算法]]
[[Category:字符串算法]]
[[Category:自然语言处理]]

2021年5月17日 (一) 20:45的最新版本


上下文无关文法
语法分析器
· LL剖析器
· 算符优先分析器
· LR剖析器
· SLR剖析器
· LALR剖析器

计算机科学语言学中,语法分析(英語:syntactic analysis,也叫 parsing)是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。

语法分析器(parser)通常是作为编译器解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。

语法分析器分类

[编辑]

语法分析器的任务主要是确定是否可以以及如何从语法的起始符号推导出输入符号串(输入文本),主要可以通过两种方式完成:

  • 自顶向下分析:根据形式语法规则,在语法分析树的自顶向下展开中搜索输入符号串可能的最左推导。单词按从左到右的顺序依次使用。
  • 自底向上分析:语法分析器从现有的输入符号串开始,尝试将其根据给定的形式语法规则进行改写,最终改写为语法的起始符号。

参考文献

[编辑]
书籍

外部連結

[编辑]

参见

[编辑]