2006-01-01から1ヶ月間の記事一覧

JavaのANTLR定義を読む6

ソースhttp://www.antlr.org/grammar/java/java.g packageDefinition パッケージ宣言。#p.setType(PACKAGE_DEF);が判った、ASTのノードを操作するという印らしい。

JavaのANTLR定義を読む5

ソースhttp://www.antlr.org/grammar/java/java.g compilationUnit コンパイル単位(通常はファイル)全体を表す。 packageDefinition パッケージ宣言。#p.setType(PACKAGE_DEF);はよく判らん。なぜ#が付くのか?

JavaのANTLR定義を読む4

HEX_DIGIT 16進数。 VOCAB ダミールールらしい。何のためにあるか不明。 IDENT 識別子。{testLiterals=true;}は何のためか不明。 NUM_INT 数値。isDecimalは分岐用。Token tはサフィックスを解析。 初めの一塊は.で始まる場合。f,Fが付くときのみfloat,それ…

JavaのANTLR定義を読む3

ソースhttp://www.antlr.org/grammar/java/java.g // OPERATORS オペレータいろいろ。単なる列挙なので省略。 WS 空白。タブその他は無視する。改行はnewline()する。 SL_COMMENT 一行コメント。単なる改行として扱う。 ML_COMMENT 複数行コメント。内部の改…

JavaのANTLR定義を読む2

ソースhttp://www.antlr.org/grammar/java/java.g class JavaLexer extends Lexer; options { exportVocab=Java; // この語彙を"Java"と呼ぶ testLiterals=false; // リテラルのテストをしない(よく判らん) k=4; // 最大4文字の先読みをする charVocabulary=…

JavaのANTLR定義を読む1

ソースhttp://www.antlr.org/grammar/java/java.g class JavaRecognizer extends Parser; options { k = 2; // 2トークン先読みする exportVocab=Java; // この語彙を"Java"と呼ぶ codeGenMakeSwitchThreshold = 2; // 最適化(よく判らん) codeGenBitsetTest…

javaCC eclipse

プラグインを見つけた。 http://perso.wanadoo.fr/eclipse_javacc/

情報源

公式サイト http://www.antlr.org/ ANTLR studio 使っていないけどeclipse用開発環境。メーリングリストもある。 http://www.placidsystems.com/ ANTLReclipse eclipse用無料開発環境。 http://antlreclipse.sourceforge.net/updates/site.xml ……情報少ない…

mixiがmixiに見えないGreesemonkeyスクリプト

web

絶対、需要大だね。主にさぼり用途で。

行番号・列番号

Lexer内で IDENTIFIER: LETTER (LETTER|DIGIT)* { System.out.println(getLine()); //行番号を取得 System.out.println(getColumn()); //列番号を取得 };として読み出す。Parserに渡した後には保存されていない(はず)なので、エラー報告を詳しくしたい場合は…

ルール内での引数の渡し方

expr [int a] : "(" (expr[a+1])* ")" ;というようにルール内で引数を[]に括って渡す。

Understanding ANTLR Grammar FilesよりRule

expr //ルール名の定義 [int a] //引数の定義 returns [int c] //返り値を保持する変数の定義 // int cを定義すると共に // 最後にreturn c;することを定義 throws MyException //このルールが投げる例外 options{defaultErrorHandler=false;} //このルール…

Understanding ANTLR Grammar FilesよりGrammar

header{ package com.my.myPack; /* * ヘッダー部 * ANTLRが生成する全ファイルに共通するものを記述する。 * package宣言や共通のimport宣言など */ } { import java.util.ArrayList; import my.MyClass; /* * アクション部 * grammar毎に固有のものを記述…

An Introduction To ANTLRより対応状況

ANTLRはJava, C++, C#の解析器の生成に対応している(pythonももうすぐ)。 ANTLRは 文字列 トークン列 二次元木構造 を解析する。これは Lexer Parser Tree Walker に対応する。

ANTLRのメモ

ANTLRは日本語リソースが皆無に近いので調べて判ったことを書いて行きます。