Velocity

Velocityについて

コミュニティ

ドキュメント

比較

ツール

日本語訳について

Velocity の仕様 - AST

これは現在古くて、すぐに更新されることになります。

これは Velocity のための仮のAST構造です。

構造は、ANTLR BNF形式の表示をしようして記述しています。
ツリーは、#(ノード ノード ノード)で記述されています。
ここで #()は、ツリーフォームを表します。
最初のノードは、ツリーのrootで、以下のノードは
すべて子供です。

図示すると, #(A B C D E) は、このようになります:

     A
     |
     B-C-D-E

Rootノードは、つねに端末ノードでなければならず、
すべて大文字の識別子で表記されます。

非rootノードは、端末ノードや副ルールや内部サブツリー
となります。

副ルールは、ツリーもしくは単純ノードとなります。


block
	:
		#(	BLOCK
				(statement)*
		)

	;
statement
	:
			text
		|	if_statement
		|	foreach_statement
		|	include_statement
		|	set_statement
		|	parse_statement
		|	param_statement
		|	stop_statement
		|	reference
	;


text
	:
		TEXT
	;

//   if/elseif/else の連鎖は、単に<if_statement>によって解決される
//      ことをあわらします。<elseif>は、直前の<if_statement>の
//      処理のfalse分岐の<if_statement>であり、<else>は単に
//      <if_statement>で式の評価がつねに真で、false分岐が生成されません。

if_statement
	:
		#(	IF
				// 評価される式
				expr

				// 真の分岐
				block

				// 偽の分岐
				( block )?
		)
	;

foreach_statement
	:
		#(	FOREACH
				// それぞれのリファレンスのイテレーションにより割り当てられる値
				reference
				// イテレートするオブジェクトのリスト
				reference
				// 実行するコマンドブロック
				( block )?
		)
	;

set_statement
	:
		#(	SET
				// セットするリファレンスの値
				// 割り当てる値の式
	;

parse_statement
	:
		#(	PARSE
				STRING_LITERAL
		)
	;

include_statement
	:
		#(	INCLUDE
				STRING_LITERAL
		)
	;

stop_statement
	:
		STOP
	;

reference
	:
		#(	REFERENCE
				postfix
	;

postfix
	:
		method_call
		|
		member
		|
		identifier
	;

member
	:
		#(	DOT
				identifier
				(	primary
				|	method_call
				)	
	;

primary
	:
		IDENTIFIER
	;

method_call
		#(	CALL
				postfix
				// 引数のリスト
				( expr ) *
		)
	;



このドキュメントは、 熊坂祐二 が訳しました。
コメントがある場合は、 jajakarta-report@jajakarta.good-day.net までお願いします。
オリジナル英文 Copyright © 1999-2001, Apache Software Foundation