新・見だし解析2

alpha-34としてリリースしてみました。
あつなついせいで、頭がのぼせてふやけてわけわからんです。

こないだからの変更点は、単独のトークンで見出しを構成できるようにTHeadingActionが集合になった事ぐらい。

type
  THeadingAction = set of (haFirst, haLast);
  TParsingAction = (paNone, paEnter, paSwitch, paLeave);
  PParsingRule = ^TParsingRule;
  TParsingRule = record
    Current: WideString;
    Token: Byte;
    TokenText: WideString;
    HeadingAction: THeadingAction;
    ParsingAction: TParsingAction;
    Next: WideString;
    CurrentNum: Integer;
    NextNum: Integer;
  end;

ObjectPascalは、意外に、type T = class(S); ってフィールドが無い時はendを省略できる構文が癌です。
C系の場合は関数定義が癌で…voidやintや、それから適当な識別子が来た時はとりあえず全てFirstにしておいて、識別子に続けて"("が来たら関数で、";"または"{"がLast…定数式中にも"("が出現できるのでってことは配列の要素数なんかで誤爆しないように"["〜"]"は待避させて、あと型式に"("って書けたっけか?typeofがあるなら書けそうだなあ…
もういやだ、考えたくない、どなたかD用の定義作っていただけませんかー。