2017-11-28 14 views
-2

Antlr解析ツリーを生成しようとしています。これは私がウェブから入手したサンプル文法です。Antlr解析ツリーを生成する

grammar Hel; 
hi : 'hello' ID ;   
ID : [a-z]+ ;    
WS : [ \t\r\n]+ -> skip ; 

私はParupツリーを生成するためにJupyterノートブックで次のコードを試しました。

修正方法を教えてください。

from antlr4 import * 
from HelLexer import HelLexer 
from HelParser import HelParser 


input = InputStream('hello jgt') 
lexer = CoDalogLexer(input) 
stream = CommonTokenStream(lexer) 
parser = HelParser(stream) 
tree = parser.hi() 

パーズツリーを生成するにはどうすればよいですか?ツリーの要素にはどうやってアクセスしますか?

ありがとうございます。

+0

あなたは何がうまくいかなかったか説明しませんでした。 'tree'は解析木を含んでいなければなりません。 –

+0

どのようにしてツリーの要素にアクセスできますか? –

答えて

0

構文解析ツリーの要素へのアクセスは簡単で、生成されたクラスを見ると明らかになります。解析ツリーには、解析中に見つかった要素に対して作成されたすべての解析ルールコンテキストにアクセスできるようにするプロパティまたはメソッドがあります(children)。便宜上、特定の子コンテキストへのアクセスを容易にする特別なアクセサがあります。あなたの例では、HiParseContextにID()関数が表示されます。これは、一致したIDトークンの詳細(例えば、入力の場所、トークンタイプ、トークンテキストなど)を示すコンテキストを提供します。可能なことを確認するには、生成されたソースコードとランタイムソースコードを見てください。

関連する問題