最近ではBlogやTwitterなど直接HTMLを記述することなく、Webページを構築することができるようになりましたが、 個人ページや個性的なページを構築しようと思うとHTMLを記述する必要があります。
HTMLの記述に慣れてくるともっと簡単に記述できないか、間違いなく記述できないかと考えるようになります。
ブラウザは多少のHTML記述ミスがあっても見かけ上、正常に表示してしまい、なかなかミスに気がつかないものです。そして後々苦労します。
そこでHTMLを生成するコンパイラを作成しました。
プログラマに馴染みがあるC言語風の簡易記述で、なおかつミスを防ぐことができます。ページに統一性をもたせることもできます。
しかも文法は自分で定義することができます。文法を追加、修正することができます。 ここで紹介するEasyHTMLはHTMLに限らず、他の用途にも利用できる簡易「コンパイラコンパイラ」ともいえます。 UnixのツールAwkやSEDと似た機能ではありますが、より簡単に使用できることを目標にしました。 実はこのページの作成にも利用されています。2004年から使い続けています。
きっとみなさんのお役に立つものと思います。
ここで提唱するEasyHTMLの記述と従来のHTML記述を比較してみましょう。このようにC言語風の記述をコンパイルし、HTMLを生成します。どちらの記述が簡単で間違いを防止できるかは一目瞭然でしょう。
Easyの記述例 HTMLの記述例
Easy形式のテキストファイルを入力とし、EasyHTMLコンパイラが文法定義ファイルを参照して、HTML形式のファイルを出力します。
Easy形式には最低限の決まりがあります。文法定義ファイルには一行に文字列を記述します。
- C言語風の中カッコ{}を使用(原則HTML形式内で中カッコを使用できません。代わりに16進表記を利用ください。)
- 文法定義ファイル(easyhtml.txt)に文字列の置換方法を記述
- 文法定義ファイルの定義数は100まで。
- ネストの深さは100まで。
- 大文字と小文字は区別される。
文法定義ファイルの基本例としては次のように記述しておきます。
- 3つの項目をタブ区切りで記述
- 1項目は関数の定義
- 2項目は開始部分の置換文字列
- 3項目は終了部分の置換文字列
- 文法定義ファイルは先頭行から再評価されます。つまり先頭行の優先順位が高くなります。
例、abc{}とbc{}という関数を定義し、bc{}の優先順位が高いとabcという文字列はa文字+bc{}関数と解釈されます。
重複する可能性があるため短い関数名は避けましょう。b{}ではなくbold{}が望ましいです。
これにより次のような変換文法が働きます。文法記述に工夫を加えることで複雑な文法を構成することができます。
Easyの記述例 HTMLへの変換例 html{} <html></html> head{} <head></head> body{} <body></body> title{} <title></title>
例えば、hrefの文法を次のように2段階で定義します。つまりhrefは2つの引数をとるものとして扱います。
以下の事前埋め込みマクロが定義されています。Sample.txtを参照ください。
Easyの記述例 HTMLへの変換例 href{test.html}{テスト} <a href=test.html>テスト</a>
- $lock$、以降をコンパイル対象から外します。文頭記述
- $unlock$、コンパイル対象を再開します。文頭記述
- date{}、日付に置換されます。
- time{}、時刻に置換されます。
文法定義ファイルに定義済みのEasy形式を紹介します。必要な文法を適宜追加ください。記述例としてSample.txtも参照ください。
Easyの記述 HTMLへの変換 html{} <html></html> head{} <head></head> body{} <body></body> title{} <title></title> center{} <center></center> href{test.html}{テスト} <a href=test.html>テスト</a> tablex{width=100%}{} <table width=100%></table> caption{} <caption></caption> tr{} <tr></tr> td{} <td></td> pre{} <pre></pre> sup{} <sup></sup> sub{} <sub></sub> b{} <b></b> br{} <br> small{} <small></small> black{} <font color=black></font> brown{} <font color=brown></font> red{} <font color=red></font> orange{} <font color=orange></font> yellow{} <font color=yellow></font> green{} <font color=green></font> blue{} <font color=blue></font> purple{} <font color=purple></font> gray{} <font color=gray></font> white{} <font color=white></font> underline{} <u></u> img{} <img></img> blockquote{} <blockquote></blockquote> ol{} <ol></ol> ul{} <ul></ul> li{} <li></li> hr{} <hr> breces{} {} parentheses{} <>
使用方法は簡単です。Compileボタンを押すと入力ファイル(テキストファイル)選択ウィンドウが開きます。
(文法定義ファイルは入力ファイルと同一ディレクトリに配置してください。入力ファイルと対になります。)
正常に動作すると「成功」と表示します。中断したいときはCancelします。
文法定義にない記述間違いがあると、無限ループに陥るため、途中でコンパイルを終了します。該当行数を表示するので確認してください。出力ファイルも参考にしてください。
ネストの間違いがあると、失敗します。中カッコの数があっていません。出力ファイルを参考にしてください。
EasyHTML.zip
- EasyHTML.exe
- EasyHTML.pdf
- easyhtml.txt
- Sample.txt
- avast!で検査済み
(C)2004-2010 All rights reserved by Einstein.
- プログラムの著作権は、法律で保護されています。
- 個人利用に限定され、著作権者の許可なく商用利用できません。
- 無保証、無担保です。バグがあってもその修正義務を負いません。問い合わせによる回答義務も負いません。
- 直接間接に関わらず、使用によって生じたいかなる損害も著作権者は責任を負いません。
- 仕様は予告なく変更されることがあります。