徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
安装
比浏览器更快的访问!
 

Yacc

指数 Yacc

yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器主要是用C語言寫成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把兩部份產生出來的C程序一併編譯。yacc本來只在Unix系統上才有,但現時已普遍移植往Windows及其他平台。 yacc的输入是巴科斯范式(BNF)表达的语法规则以及语法规约的处理代码,Yacc输出的是基于表驱动的编译器,包含输入的语法规约的处理代码部分。 yacc是开发编译器的一个有用的工具,采用LALR(1)语法分析方法。 yacc最初由AT&T的Steven C. Johnson为Unix操作系统开发,后来一些兼容的程序如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陆续出现。它们都在原先基础上做了少许改进或者增加,但是基本概念是相同的。 由于所产生的解析器需要词法分析器配合,因此Yacc经常和词法分析器的产生器——一般就是Lex——联合使用。IEEE POSIX P1003.2标准定义了Lex和Yacc的功能和需求。.

16 关系: ANTLR功能AT&T巴科斯范式C♯編譯器电气电子工程师学会词法分析需求GNU bisonJavaLexLinuxPOSIXSchemeUNIX

ANTLR

ANTLR(全名:ANother Tool for Language Recognition)是基于LL(*)算法实现的语法解析器生成器(parser generator),用Java语言编写,使用自上而下(top-down)的递归下降LL剖析器方法。由旧金山大学的Terence Parr博士等人於1989年開始發展。 ANTLR最初叫做PCCTS,Purdue Compiler Construction Tool Set,是Terence Parr在普渡大学攻讀碩士學位時的創作,在Hank Dietz教授的指导下,开始研究构造自动化的分析器。1993年,Parr取得博士學位,並於同年发布ANTLR 1.10版。最早的ANTLR只支持Java, 直到ANTLR 3以後開始支持Ada95、C、C#、JavaScript、Objective-C、Perl、Python、Ruby、C++和Standard ML。 如同一般的詞法分析器(lexer)和語法分析器(parser),ANTLR可以用來產生樹狀分析器(tree parsers)。ANTLR 文法定义使用類似EBNF(Extended Backus-Naur Form)的定义方式,形象十分簡潔直观。例如: ANTLR用A: a;来表示规则,舊式的方法則是以 A.

新!!: Yacc和ANTLR · 查看更多 »

功能

功能(functional)為一軟體工程用語,功能需求定義一個軟體系統或元件的功能,也是一個系統需提供的功能及服務。 功能可以用一組輸入、行為及輸出的組合來表示。功能需求可以是計算、技術細節、資料處理或其他說明系統希望達成功能的內容。功能需求會以非功能性需求(或是品質需求)為其基礎,後者會描述設計或實--時的限制條件(例如性能需求、保安性或可靠度等)。 若依照需求工程的定義,功能需求會列出系統的特定結果,而非功能性需求會列出系統的一些整體特性(如成本及可靠度),功能需求有關系統的應用架構,而非功能性需求和系統的技術架構有關。 例如一個計算機的功能需求可能是可計算9位數字的加減乘除及根號,而其非功能性需求是成本需在美金10元以下。 功能需求理論上需要有全面性及一致性,一方面描述用戶所需要的所有機能,同時各機能的說明不能前後衝突。不過對於大型的系統,由於系統的複雜及參與人員看待事物的觀點不同,要作到全面性及一致性相當困難。 有時需求分析師會在收集許多功能需求後,會依功能需求建立一系列的用例。功能需求的階層為:使用者或利益相關者的需求->功能->用例->業務規則,每一個用例都會描述一個到多個功能需求所對應的行為。不過有時需求分析師也會從一些用例開始,再從用例中找出用例中需要用的功能需求。 分类:软件工程.

新!!: Yacc和功能 · 查看更多 »

AT&T

AT&T公司是美國最大的固網電話服務供應商及第一大的流動電話服務供應商,此外還提供寬頻及收費電視服務。合共1.5億戶提供服務,當中8,510萬戶為無線用戶。 西南貝爾公司創辦於1983年是根據的,而成立的其中一間。1995年西南貝爾公司易名為SBC通訊公司,再於2005年收購了美國電話電報公司並易名為AT&T公司,此外並繼承了原由美國電話電報公司所持有的商標及在紐約證券交易所的上市編碼T(電話之意)。 目前AT&T公司通過購買持有不少因1983年判決而剝離的。 公司總部位於美國德州的達拉斯市中心Godinez, Victor and David McLemore.

新!!: Yacc和AT&T · 查看更多 »

巴科斯范式

巴科斯范式(Backus Normal Form,縮寫為 BNF),又称为巴科斯-诺尔范式(Backus-Naur Form,縮寫同樣為 BNF,也譯为巴科斯-瑙尔范式、巴克斯-诺尔范式),是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。它是由约翰·巴科斯(John Backus)和彼得·诺尔(Peter Naur)首先引入的用来描述计算机语言语法的符号集。 尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于程序设计语言、指令集、通信协议的语法表示中。大多数程序设计语言或者形式语义方面的教科书都采用巴科斯范式。在各种文献中还存在巴科斯范式的一些变体,如扩展巴科斯范式 EBNF 或扩充巴科斯范式 ABNF。.

新!!: Yacc和巴科斯范式 · 查看更多 »

C♯

C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#以.NET框架类库作为基础,拥有类似Visual Basic的快速开发能力。C#由安德斯·海尔斯伯格主持开发,微软在2000年发布了这种语言,希望借助这种语言来取代Java。C#已经成为Ecma国际和国际标准组织的标准规范。.

新!!: Yacc和C♯ · 查看更多 »

編譯器

编译器(compiler),是一種電腦程式,它會將用某種程式語言寫成的原始碼(原始語言),轉換成另一種程式語言(目標語言)。 它主要的目的是將便于人编写、阅读、维护的高级计算机语言所寫作的原始碼程式,翻译为计算机能解读、运行的低阶机器语言的程序,也就是執行檔。编译器将原始程序(source program)作为输入,翻译产生使用目标语言(target language)的等价程序。源代码一般为高阶语言(High-level language),如Pascal、C、C++、C# 、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。 一个现代编译器的主要工作流程如下: 源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(Linker)→ 執行檔(executables), 最後打包好的檔案就可以給電腦去判讀執行了。.

新!!: Yacc和編譯器 · 查看更多 »

电气电子工程师学会

電機電子工程師學會(Institute of Electrical and Electronics Engineers,簡稱為IEEE,英文读作“i triple e”)是一个建立於1963年1月1日的国际性电子技术与电子工程师协会,亦是世界上最大的专业技术组织之一,擁有來自175個國家的36萬會員。 除設立於美國紐約市的總部以外,亦在全球150多個國家擁有分會,並且還有35個專業學會及2個聯合會。其每年均會發表多種雜誌、學報、書籍,亦舉辦至少300次的專業會議。 目前IEEE在工業界所定義的標準有著極大的影響。.

新!!: Yacc和电气电子工程师学会 · 查看更多 »

词法分析

词法分析(lexical analysis)是计算机科学中将字符序列转换为标记(token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(lexical analyzer,简称lexer),也叫扫描器(scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。.

新!!: Yacc和词法分析 · 查看更多 »

需求

求可以指:.

新!!: Yacc和需求 · 查看更多 »

GNU bison

GNU bison(Bison意为犎牛;而Yacc与意为牦牛的Yak同音)是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新近版本中,Bison增加了对GLR语法分析算法的支持。 GNU bison基本兼容Yacc,并做了一些改进。它一般与flex一起使用。.

新!!: Yacc和GNU bison · 查看更多 »

Java

Java是一種廣泛使用的電腦程式設計語言,擁有跨平台、物件導向、泛型程式設計的特性,广泛应用于企业级Web应用开发和移动应用开发。 任職於昇陽電腦的詹姆斯·高斯林等人于1990年代初开发Java語言的雛形,最初被命名为Oak,目標設定在家用电器等小型系統的程式语言,應用在电视机、电话、闹钟、烤面包机等家用电器的控制和通訊。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代網際網路的发展,Sun公司看見Oak在網際網路上应用的前景,于是改造了Oak,於1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的-zh-hans:指针; zh-hant:指標;-,改以-zh-hans:引用; zh-hant:參照;-取代,同時移除了C++中的--和多重继承特性,改用接口取代,增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。昇陽電腦对Java语言的解释是:「Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言」 Java不同於一般的编译語言或直譯語言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性。在早期JVM中,这在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的執行速度有了大幅提升。 与传统型態不同,Sun公司在推出Java時就将其作为开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是 Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司後來推出了与之竞争的.NET平台以及模仿Java的C#语言。後來Sun公司被甲骨文公司併購,Java也隨之成為甲骨文公司的產品。 現時,行動作業系統Android大部分的代碼採用Java 程式設計語言編程。.

新!!: Yacc和Java · 查看更多 »

Lex

在電腦科學裡面,lex是一個產生詞法分析器(lexical analyzer,"掃描器"(scanners)或者"lexers")的程式。 Lex常常與yacc 語法分析器產生程式(parser generator)一起使用。Lex(最早是埃里克·施密特和迈克·莱斯克製作)是許多UNIX系統的標準詞法分析器(lexical analyzer)產生程式,而且這個工具所作的行為被詳列為POSIX標準的一部分。 Lex讀進一個代表詞法分析器規則的輸入字串流,然後輸出以C語言實做的詞法分析器原始碼。 雖然傳統上是商業軟體,但是有些根據原本AT&T程式碼這些版本的Lex可以以公開原始碼的形式獲得,並被視為某些系統的一部份,例如說OpenSolaris和貝爾實驗室九號計畫。另一個有名的Lex公開原始碼版本是flex,代表"快速的詞法分析器"(fast lexical analyzer).

新!!: Yacc和Lex · 查看更多 »

Linux

Linux( )是一種自由和開放源碼的類UNIX作業系統。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。,在加上使用者空間的應用程式之後,成為Linux作業系統。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多數Linux系統還包括像提供GUI的X Window之類的程序。除了一部分專家之外,大多數人都是直接使用Linux發行版,而不是自己選擇每一樣組件或自行設置。 Linux嚴格來說是單指作業系統的内核,因作業系統中包含了許多用戶圖形介面和其他实用工具。如今Linux常用来指基于Linux的完整操作系统,內核則改以Linux内核稱之。由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于1983年发起的GNU计划提供,自由软件基金会提议将其组合系统命名为GNU/Linux,但Linux不屬於GNU計劃,這個名稱並沒有得到社群的一致認同。 Linux最初是作为支持英特尔x86架构的个人电脑的一个自由操作系统。目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。Linux可以运行在服务器和其他大型平台之上,如大型主机和超级计算机。世界上500个最快的超级计算机90%以上运行Linux发行版或变种,包括最快的前10名超级电脑运行的都是基于Linux内核的操作系统。Linux也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。在移动设备上广泛使用的Android操作系统就是建立在Linux内核之上。 通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其衍生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包含X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器、LibreOffice办公软件、GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。.

新!!: Yacc和Linux · 查看更多 »

POSIX

可移植作業系統接口(Portable Operating System Interface,縮寫為POSIX),是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德·斯托曼应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。 Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。 微软的Windows NT声称部分实现了POSIX标准。 当前的POSIX主要分为四个部分:Base Definitions、System Interfaces、Shell and Utilities和Rationale。.

新!!: Yacc和POSIX · 查看更多 »

Scheme

Scheme是一种函数式编程语言,是Lisp的两种主要方言之一(另一种为Common Lisp)。不同于Common Lisp,Scheme遵循極簡主義哲学,以一个小型语言核心作为标准,加上各种强力语言工具(语法糖)来扩展语言本身。 麻省理工學院與其他院校曾采用Scheme教授计算机科学入門課程。著名的入門教材《-zh-hans:计算机程序的构造和解释;zh-hant:電腦程式的構造和解釋-》(SICP)利用Scheme來解釋程序設計 。Scheme的廣泛受眾被視為一個主要優勢,然而不同實現之間的差異成為了它的一個劣勢。 Scheme最早由麻省理工學院的蓋伊·史提爾二世與傑拉德·傑伊·薩斯曼在1970年代發展出來,並由兩人發表的「λ論文集」推廣開來。 Scheme語言與λ演算關係十分密切。小寫字母「λ」是Scheme語言的標誌。 Scheme的哲学是:设计计算机语言不应该进行功能的堆砌,而应该尽可能减少弱点和限制,使剩下的功能显得必要。Scheme是第一個使用靜態作用域的Lisp方言,也是第一个引入“干净宏”和第一类续延的编程语言。.

新!!: Yacc和Scheme · 查看更多 »

UNIX

UNIX,一种计算机操作系统,具有多任务、多用户的特征。于1969年,在美国AT&T公司的贝尔实验室开发類UNIX(UNIX-like)。.

新!!: Yacc和UNIX · 查看更多 »

重定向到这里:

YACC

传出传入
嘿!我们在Facebook上吧! »