ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

パーサジェネレータ

索引 パーサジェネレータ

パーサジェネレータ(parser generator)は、構文解析器を作成するプログラムである。.

22 関係: ANTLRプログラミング言語プログラム (コンピュータ)パックラット構文解析コンパイラコンパイラジェネレータBisonBoostC言語Coco/R高階関数GNUプロジェクトJavaCCLL法LR法Parsing Expression GrammarSableCCYacc構文解析器演算子文脈自由文法1991年

ANTLR

ANTLR(ANother Tool for Language Recognition)とは、LL(*)構文解析に基づくパーサジェネレータである(バージョン3.xはLL(*)、2.xまではLL(k))。PCCTS(Purdue Compiler Construction Tool Set)の後継として1989年に開発され、現在も活発に開発が続いている。中心となっているのは、サンフランシスコ大学の Terence Parr 教授である。 ANTLR はLR法に基づいたパーサジェネレータと競合関係にあり、"ANT(i)-LR"(反LR)と読めるのも偶然ではない。 ANTLR はパーサだけでなくレキサーおよびツリーパーサも生成可能である。 文法の記述方法は、EBNFに似た形式となっている。 4.5 現在、ANTLR は Java、Python (2と3)、C#、JavaScript の構文解析器のコードを生成できる。ANTLR はBSDライセンスで提供されている。.

新しい!!: パーサジェネレータとANTLR · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: パーサジェネレータとプログラミング言語 · 続きを見る »

プログラム (コンピュータ)

ンピュータプログラム(英:computer programs)とは、コンピュータに対する命令(処理)を記述したものである。コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。.

新しい!!: パーサジェネレータとプログラム (コンピュータ) · 続きを見る »

パックラット構文解析

パックラット構文解析(英:Packrat Parsing)とは、PEGにより構文解析を行うアルゴリズムである。"packrat"はネズミの一種であり、そのネズミの習性に由来して「役に立たなそうなものでも習慣的に集めて持っておく人」という意味でも使われる。.

新しい!!: パーサジェネレータとパックラット構文解析 · 続きを見る »

コンパイラ

ンパイラ(英:compiler)とは、コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換するプログラムである。.

新しい!!: パーサジェネレータとコンパイラ · 続きを見る »

コンパイラジェネレータ

ンパイラジェネレータ(compiler generator)は、コンパイラを生成するプログラムである。.

新しい!!: パーサジェネレータとコンパイラジェネレータ · 続きを見る »

Bison

Bison(バイソン)とは構文解析器を生成するパーサジェネレータの一種であり、CコンパイラとしてのGCCのサポートのために開発されたフリーソフトウェアである。.

新しい!!: パーサジェネレータとBison · 続きを見る »

Boost

Boost (ブースト)とは、C++の先駆的な開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースライブラリのことを指す。コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。 Boostで公開されるライブラリはコミュニティの公開レビューによって精選されている。Boostを使用して作成したプログラムは、商用、非商用を問わず無償のの下でライセンスされる。 Boostはテンプレートなどを活用して積極的にメタプログラミングやジェネリックプログラミングの技法を取り入れて行く傾向がある。そのためBoostライブラリの利用者にはC++の現代的な記述に慣れていることを要求される。 。.

新しい!!: パーサジェネレータとBoost · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: パーサジェネレータとC言語 · 続きを見る »

Coco/R

Coco/R は、対象となる言語の属性付き文法を入力とし、その言語の字句解析器と構文解析器を生成するパーサジェネレータである。字句解析部は一種の決定性有限状態機械として機能する。構文解析部には再帰下降構文解析によるLL法を使う。LL(1)での衝突の解決には、複数シンボルの先読みを行うか、意味論的チェックを行う。そのため、任意の k の LL(k) の文法クラスに対応可能である。 Coco/R にはいくつかの言語での実装がある。リンツ大学のリリースした最新版では、C#版とJava版がある。生成される構文解析器がそれらの言語で書かれている。 Coco/R は修正を加えた GNU General Public License でライセンスされ、配布されている。.

新しい!!: パーサジェネレータとCoco/R · 続きを見る »

高階関数

階関数(こうかいかんすう、higher-order function)とは、第一級関数をサポートしているプログラミング言語において、関数(手続き)を引数にしたり、あるいは関数(手続き)を戻り値とするような関数のことである。.

新しい!!: パーサジェネレータと高階関数 · 続きを見る »

GNUプロジェクト

GNUプロジェクト(グヌープロジェクト、)とは、フリーソフトウェアマス・コラボレーションプロジェクトである。 プロジェクトは1983年9月27日にMITのリチャード・ストールマンにより発表された。このプロジェクトの狙いは、ユーザーが自由にソフトウェアを実行し、(コピーや配布により)共有し、研究し、そして修正するための権利に基づいたソフトウェアを開発し提供することにより、ユーザーにそのような自由な権利を与えた上でコンピュータやコンピューティングデバイスの制御をユーザーに与えることにある。GNUのソフトウェアはこれらの自由な権利を(そのライセンスによって)法的に保障しているため、フリーソフトウェアである。なおフリーソフトウェアの「フリー」という言葉は常に自由な権利を指し示すために必要なため使われている。 コンピュータの全てのソフトウェアが、(使用、共有、研究、修正を行うための)自由な権利を全てユーザーに付与することを確保するためには、ソフトウェアの中で最も基本的かつ重要な部分である(ユーティリティプログラムを数多く含む)オペレーティングシステムをフリーソフトウェアとすることが必要となった。GNU宣言によると、GNUプロジェクトの創立目標はフリーオペレーティングシステムを設立し、さらに可能であれば、「フリーでないソフトウェアを全く使わないでも済むようUNIXシステムに通常付属する有益なもの全て」も構築することであった。ストールマンはこのオペレーティングシステムをGNU("GNU's not Unix"を意味する再帰的頭字語)と呼ぶことに決め、その設計をプロプライエタリオペレーティングシステムであるUNIXの設計に基づくようにした。GNUの開発は1984年1月に開始された。1991年、リーナス・トーバルズによりGNUプロジェクトとは関係のないプロジェクトで開発されたLinuxカーネルが発表され、1992年12月にGNU General Public Licenseのバージョン2に基づき利用できるようにした, kernel.org, December 1992。LinuxカーネルはGNUプロジェクトによって既に開発されていた、オペレーティングシステムのユーティリティと組み合わされ最初のフリーソフトウェアオペレーティングシステムとして認められた。このフリーソフトウェアオペレーティングシステムはLinuxやGNU/Linuxとして知られている。 GNUプロジェクトは現在、ソフトウェア開発、意識改革、政治的キャンペーンや、新しい題材の共有などを行っている。.

新しい!!: パーサジェネレータとGNUプロジェクト · 続きを見る »

JavaCC

JavaCC (Java Compiler Compiler) は、オープンソースのJava向けのパーサジェネレータである。 JavaCCは、yaccと同様に拡張BNFを入力としてとる。yaccとの違いは生成されるパーサがJavaのソースコードだということである。 しかしながら、yaccとは異なり、JavaCCはトップダウンのパーサを構築する、そのため、LL (K) クラスの文法にしか対応していない(厳密にいうと左再帰は使えない)。 JavaCCに付属するJJTreeというツールを利用することで、構文木を生成することができる。 JavaCCはBSDライセンスが適用されている。.

新しい!!: パーサジェネレータとJavaCC · 続きを見る »

LL法

LL法またはLL構文解析とは、文脈自由文法のサブセットのためのトップダウン構文解析法の一種である。入力文字列を左 (Left) から構文解析していき、左端導出 (Leftmost Derivation) を行う(このため、LL法と呼ぶ。LR法も参照されたい)。この方式で構文解析可能な文法のクラスを LL文法 と呼ぶ。 以下では、表駆動型の構文解析を解説する。他の手法として、個々の構文規則に対応するサブルーチンの呼び出しから成る再帰下降構文解析もある。表駆動型は計算機による生成に向き、再帰下降構文解析はコードの手書きに向いている(しかし、再帰下降構文解析のコードを自動生成する ANTLR のようなツールもある)。 k 個の字句(トークン)を先読みする場合、LL(k) と表記する。ある文法について LL(k) 構文解析器が存在し、バックトラッキングなしで構文解析できる場合、その文法を LL(k) 文法であるという。LL(1) 文法は機能が限定されるが、次のトークンだけを先読みすればよいため、構文解析器の生成が容易であり、よく使われている。一般に設計に問題がある言語は大きな k が必要となる傾向があり(k が大きいということは、人がプログラムを読む場合にも、たくさん読まないと意味を把握できないということである)、構文解析が大変になる。.

新しい!!: パーサジェネレータとLL法 · 続きを見る »

LR法

LR法またはLR構文解析器とは、文脈自由文法の構文解析手法/構文解析器である。LR法では、入力を左(Left)から右に読んでいき、右端導出(Rightmost derivation)を行う。このためLRと名づけられている。「LR(k)」といった場合、k は、消費をともなうことなく「先読み」が進められる入力記号の最大数を意味する。通常、k は 1 であり、その場合省略されることが多い。LR(k)の構文解析器が対応する文脈自由文法も LR(k) と呼ばれる。.

新しい!!: パーサジェネレータとLR法 · 続きを見る »

Parsing Expression Grammar

Parsing Expression Grammar (PEG, Parsing Expression Grammar) は、分析的形式文法の一種であり、形式言語をその言語に含まれる文字列を認識するための一連の規則を使って表したものである。PEGは再帰下降構文解析を文法を示すためだけに純粋に図式的に表現したものと見ることもでき、具体的な構文解析器の実装やその用途とは独立している。 PEGにおける構文(文法)の定義は文脈自由文法のバッカス・ナウア記法によるそれに似ているが、文脈自由文法では一般に「|」(縦棒、バーティカルバー)で表される「これらのうちどれか」ではなく、「最初の解析がうまくいったらそれを、失敗なら次を順に試してゆき、成功したものを採用」(「/」であらわす)という意味を使う。 このため、文脈自由文法とは異なり、PEGには曖昧さは存在しない。文字列を構文解析する場合、正しい構文木は常に1つしかない。このためPEGはコンピュータ言語の構文解析に向いており、一方、自然言語の多義性を、そのまま複数の構文木が可能である、という形で形式化するのには向かない。.

新しい!!: パーサジェネレータとParsing Expression Grammar · 続きを見る »

SableCC

SableCC は、Javaで書かれたオープンソースのパーサジェネレータである。GNU Lesser General Public License でライセンスされている。 SableCC は以下の機能を有する。.

新しい!!: パーサジェネレータとSableCC · 続きを見る »

Yacc

Yacc(yet another compiler compiler、ヤック)はパーサジェネレータの一つである。1970年代にAT&TでUNIX用にスティーヴン・カーティス・ジョンソンが開発した。.

新しい!!: パーサジェネレータとYacc · 続きを見る »

構文解析器

構文解析器(こうぶんかいせきき)とは、構文解析をおこなうプログラム。パーサ (parser)とも。プログラミング言語処理系の入力部分が代表的であるが、それに限らず設定ファイルの読み込みなど、構造を持った入力テキストの処理を行う。自然言語処理でも使われる。 構文解析のアルゴリズムには複雑なものも多いが、パーサジェネレータの研究は盛んであり、そういったものを使用zすれば、構文規則を記述するだけで構文解析器を自動的に生成できる(プログラムのソースコードが出力される)。.

新しい!!: パーサジェネレータと構文解析器 · 続きを見る »

演算子

演算子(えんざんし、operator symbol, operator name)は、数式やコンピュータプログラミング言語などで、各種の演算を表わす記号・シンボルである。普通は、演算子は単なる記号ないし記号列であって構文論的なものであり、それに対応する演算は意味論の側にある。たとえばJavaにおいて、演算子 + を使った a + b という式は、構文論上は単にそういう式だというだけである。意味論的には数値の加算であったり、文字列の連結であったりするが、それは a と b の型に依って決まる(理論的には項書き換えのように、構文論的に意味論も与えられた演算子といったものもある)。 演算が作用する対象のことを被演算子(operand; オペランド、被演算数、引数)という。たとえば、n と 3 との和を表す式 "n + 3" において、"+" は演算子であり、その被演算子は "n" と "3" である。また、数式として一般的な被演算子と被演算子の間に演算子を記述する構文は中置記法と呼ばれる。 数学的には、基本的には、関数(単項演算子では1引数の関数、2項演算子は2引数の関数)をあらわすある種の糖衣構文のようなものに過ぎない。しかし、汎函数計算など、演算子を操作するような手法もある。.

新しい!!: パーサジェネレータと演算子 · 続きを見る »

文脈自由文法

文脈自由文法(ぶんみゃくじゆうぶんぽう、Context-free Grammar、CFG)は、形式言語の理論(特に、生成文法)において全生成規則が以下のようである形式文法である。 ここで V は非終端記号であり、w は終端記号と非終端記号の(0個を含む)任意個の並びである。「文脈自由」という用語は前後関係に依存せずに非終端記号 V を w に置換できる、という所から来ている(「文脈無用」という訳の提案もある)。文脈自由文法によって生成される形式言語を文脈自由言語という。.

新しい!!: パーサジェネレータと文脈自由文法 · 続きを見る »

1991年

この項目では、国際的な視点に基づいた1991年について記載する。.

新しい!!: パーサジェネレータと1991年 · 続きを見る »

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »