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>は<expr>の評価が常に
//      TRUEでfalse分岐のない<if_statement>に過ぎません。

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

				// 真の分岐
				block

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

foreach_statement
	:
		#(	FOREACH
				// それぞれの繰り返しで使われる変数(リファレンス) 
				// [訳注:ValueはVariableの間違いでは?]
				reference
				// 繰り返されるオブジェクトのリスト
				reference
				// 実行するコマンドブロック
				( block )?
		)
	;

set_statement
	:
		#(	SET
				// セットされる変数
				reference
				// 割り当てる値
				expr
	;

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 ) *
		)
	;



このドキュメントは、 熊坂祐二 、 高橋達男 、 小山博史 が訳しました。
コメントがある場合は、 report@jajakarta.org までお願いします。
オリジナル英文 Copyright © 1999-2003, The Apache Software Foundation