命令・コメント・文字列・プリプロセッサ・ラベルのタグ付けに成功しました。と思ったら命令のタグ付けに不具合があったようです。残念。
関数と変数の区別はデータベースを用いる必要がありそうなので、ここでひと段落です。
今回はHTMLタグを2つのモードで生成するモジュールを垂れ流し。
解析スクリプトはあまりにも長すぎるので、もう少し整理してから垂れ流したいと思います。
配色は一時的にle.Antillaのものをお借りしています。#enum global MODE_XHTML = 1
#enum global MODE_HTML
// パラメータ省略用マクロ
#define ctype aloneTag( %1, %2 = "" ) _aloneTag( %1, %2 )
#define ctype startTag( %1, %2 = "" ) _startTag( %1, %2 )
#module
#defcfunc _aloneTag str tagName, str className
if ( replaceMode@ == MODE_XHTML ) {
if ( className == "" ) {
return "<" + tagName + " />"
} else {
return "<" + tagName + " class=\"" + className + "\" />"
}
} else {
if ( className == "" ) {
return "<" + tagName + ">"
} else {
return "<" + tagName + " class=\"" + className + "\">"
}
}
#defcfunc endTag str tagName
return "</" + tagName + ">"
#defcfunc _startTag str tagName, str className
if ( className == "" ) {
return "<" + tagName + ">"
} else {
return "<" + tagName + " class=\"" + className + "\">"
}
#global
/* モジュールここまで */
*start
repeat 2
if ( cnt == 0 ) {
replaceMode = MODE_HTML
} else {
replaceMode = MODE_XHTML
}
; (X)HTMLの出力
mes startTag( "html" ) + startTag( "head" )
mes "\t" + startTag( "title" ) + "HTML Sample" + endTag( "title" )
mes endTag( "head" )
mes startTag( "body" )
mes "\t" + startTag( "p", "class1" ) + "message test" + aloneTag( "br" ) + "\n\t2nd line" + endTag( "p" )
mes endTag( "body" ) + endTag( "html" ) + "\n"
loop
stop
2007年7月20日金曜日
(X)HTMLコンバータ (2)
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿