グローバル変数万歳なところが嫌い
>>60 もし手書きするのが再帰下降のトップダウンパーサなら
構文解析と字句解析はほぼ同時に行うから
字句解析処理だけ専用に作ったりはしなくない?
コンテキストによって字句解析の方法を切り替えなければならないしことが多いし、大して楽にならないので手書きが多いような気がする。
JavaにおいてAAAというトークンがあるとき、
AAAがクラス名であるか否かを判断するのって、
結局前に来てるトークンがclassだとか、
”{”がすぐ後ろに来るとか、Extendsがくっついてるとか、
そういう情報から特定してるんでしょうか?
何かもっと効率的に判断するための方法があるんでしょうか。
Javaは普通にclassの後ろに来てるidentifier( [a-zA-Z_]([a-zA-Z0-9_])* だっけ?) がクラス名扱いになるんじゃないの?
よくわからないけど。Javaの文法ってそんなかんじじゃなかったっけ?
あるトークンがクラス名である、と判断するのは、まず
トークン列がクラス定義(class 名前 ...)だったり
インスタンス生成(new 名前...)だったり
例外送出(throw 名前...)というのを判別するのが先。
その後でマッチした名前がクラス名の役割のものだと分かる。
クラスって簡単に取れるけど
関数になると少し取りにくくなって
変数になるとさらに取りにくいよな
・予約語に含まれる型
・宣言されたクラスの型
の後ろに来るidentiferが変数名かな?
ぱっと考えただけだから例外あると思うが。
69 :
60:2010/02/09(火) 08:28:22
回答感謝、マルチレスで。
>>61 同意せざるをえない。今回はクラスに押し込める予定。
>>62 そんな高尚なブツは作れないです。
キーワードの前後関係から文を解釈する原始的なものなので。
>>63 確かに。lexのスタート状態で何とかなるかな、程度に考えてる。
70 :
デフォルトの名無しさん:2010/02/19(金) 18:01:13
Jparsec って日本語に対応してる?
してる
VBだと関数呼び出しなのか配列なのかとか
関数呼び出しなのかラベルなのか変数なのか最後までわかんないな
よく文字列リテラルの中での改行を
char str[]= "hoge \
fuga\
bar";
みたいに\で区切る言語があるけど
\なんか打たなくても
最近の進歩した解析法で、これは自動認識するようになってたりしないの?
ああ、\だとくっつけるだけか。まぁ\nとかいちいち書かなくてもよいように出来たりしないのかなっていう疑問です
ヒアドキュメント
ヒアドキュメントは構文解析サボってるだけとしか思えない
str="""
ここをBNFサンドボックスにしていい?
駄目なら他に行きます。
""";
アホの日本語訳誤植多いね。
エイホのどの本?
「コンパイラ」なら普通「ドラゴンブック」と呼ぶ。
ドラゴンブックということで・・・・・
出版社によっては連絡すると正誤表のコピーを送ってくれる。
メール書くか電話してみ?
英語のpdfみながらやってるんで・・・
EBNFについてISO/IEC 14977:1996(E)を調べてたんだが
文字セットが7-bit character set (ISO/IEC 646:1991 International Reference Version)
なんという時代遅れ
この辺のメタ構文言語ってそれぞれが勝手に微妙に変えて作るし
W3Cしかり、GOのページにも別種が載ってるし、
RFCはABNFだっけ。最近はPEGもあるし
PEG以外で一個覚えるとしたらどれがいいんだ
別に覚える必要などなかろう
そんなこと言ってるから・・
とりあえずEBNF自身をパース出来るEBNFパーサを作ったけど
文字はすべて1文字ずつ|で区切って記述。
これでUnicode文字を表現するのは悪夢
??で独自拡張するのも微妙だし
Unicodeぐらいは組み込みで使えるやつはないのだろうか
今度はABNFについて調べる作業がはじまるお
日記なら自分のブログにお書き下さい。
87 :
デフォルトの名無しさん:2010/10/07(木) 13:29:44
オートマトンの遷移関数表の入力記号が255種類以上(1万くらい)ある場合
どんなデータ構造にしたらいいですか?
1万エントリぐらいの振り分けってことだったら、関数ポインタの配列を使うかなぁ
マジレスすると255はアスキーコードで一万くらいといったのはユニコードですよ(笑)
ユニコードの実質使う文字数が1万個くらいかなーとおもっただけで
正確には100個くらいかもしれません。
何を言ってるんだ
過疎ってるのにレス速いことに絶句
Unicode は U+10FFFF までだから100万文字くらいあるぞ
100万bitの配列をもつのはいかにも非効率だから、
Unicodeコードポイントのレンジを表現できるデータ構造をつくって
intersectionやunionの演算をできるようにしておくのかねえ
ドラゴンブックの解答ってないの?
94 :
デフォルトの名無しさん:2010/11/12(金) 07:12:54
ドラゴンブックは2冊よみとおしたけど、からだにあわん。もっとげんだいてきなのないの?
タイガーブック
__
, ‐' ´ ``‐、 / ̄:三}
. /,. -─‐- 、. ヽ / ,.=j
_,.:_'______ヽ、 .! ./ _,ノ
`‐、{ へ '゙⌒ `!~ヽ. ! /{. /
`! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ そんなことよりyaccしようぜ!
. {.l '⌒ ゙ 6',! / :::::::::::::::/ __
. 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、
. ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ
,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 /
/ / :::::::::::::::: ; '´ /´\ / r'\
. i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、
{ {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \
. ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: /
jparsec2にさわって見たけど情報がなさ過ぎるぜ
こんなルールがあって、
Aのパース結果の型をどうするかって時
A = *( B | C )
オブジェクト指向だとBとCの共通の基底クラスを作って
その配列を結果とする、よりも良い解ってありますかね
通常のBNF形式の文法を
PEGパーサでパースする際にパースされないパスを教えてくれるようなツールってないかな
["+"] / "-" って文法はPEGのパーサだと"-"にマッチしないから
ここって最適化の話もOK?
Dominance frontier で分からないことがあるんだが。
xtextは?これはつかえるの?
105 :
ななし。:2011/07/27(水) 22:22:51.16
カ オ ス ラ ウ ン ジ ゆ る せ な ぁ い ー
EclipseつかってるならXText最強だな
107 :
デフォルトの名無しさん:2011/09/02(金) 10:04:15.66
いまのじだいはDSLだろ
静的コード解析のスレはないんだね。
109 :
デフォルトの名無しさん:2012/05/01(火) 07:27:16.34
このすれだろ
110 :
デフォルトの名無しさん:
その他もろもろ∋静的解析