ParserCombinator.ms
- ParserCombinatorStruct
- andDef
- anyCharDef
- boundaryDef
- charDef
- choiceDef
- contextDef
- delayDef
- eosDef
- expectDef
- isNotDef
- lookaheadDef
- manyDef
- mapDef
- memoizeDef
- optionDef
- partialDef
- sequenceDef
- sosDef
- tokenDef
- Alphabet
- AndAlso
- AnyChar
- Boundary
- Char
- Choice
- Context
- Delay
- Diff
- Digit
- EOS
- Expect
- Flatten
- Install
- IsNot
- ItemAt
- Join
- List
- Lookahead
- LowerAlphabet
- Many
- Map
- Memo
- Option
- Partial
- Sequence
- Skip
- SOS
- Token
- Uninstall
- UpperAlphabet
- arrayItemAt
- asNotCollect
- cons
- flattenArray
- joinArray
- version
- StructName
- Dump
- Equals
- GetVersion
- 依存
struct ParserCombinatorStruct
再帰下降構文解析のためのパーサコンビネータ。
private andDef
- プロパティ
<StructDef:AndStruct>
private anyCharDef
- プロパティ
<StructDef:AnyCharStruct>
private boundaryDef
- プロパティ
<StructDef:BoundaryStruct>
private charDef
- プロパティ
<StructDef:CharStruct>
private choiceDef
- プロパティ
<StructDef:ChoiceStruct>
private contextDef
- プロパティ
<StructDef:ContextStruct>
private delayDef
- プロパティ
<StructDef:DelayStruct>
private eosDef
- プロパティ
<StructDef:EOSStruct>
private expectDef
- プロパティ
<StructDef:ExpectStruct>
private isNotDef
- プロパティ
<StructDef:IsNotStruct>
private lookaheadDef
- プロパティ
<StructDef:LookaheadStruct>
private manyDef
- プロパティ
<StructDef:ManyStruct>
private mapDef
- プロパティ
<StructDef:MapStruct>
private memoizeDef
- プロパティ
<StructDef:MemoizeStruct>
private optionDef
- プロパティ
<StructDef:OptionStruct>
private partialDef
- プロパティ
<StructDef:PartialStruct>
private sequenceDef
- プロパティ
<StructDef:SequenceStruct>
private sosDef
- プロパティ
<StructDef:SOSStruct>
private tokenDef
- プロパティ
<StructDef:TokenStruct>
public fn Alphabet
アルファベットに一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:ChoiceStruct>
public fn AndAlso
与えられたパーサの内、最後のパーサの結果を返すパーサ。
- パラメータ
parsers
<Array[<Struct>]>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:AndStruct>
- 補足
最後以外のパーサが成功している間は解析対象の文字列を消費しない。
もし最後以外のパーサが失敗するとその時点でパース失敗となる。
public fn AnyChar
どのような一文字にも一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:AnyCharStruct>
public fn Boundary
ワード境界に一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:BoundaryStruct>
- 補足
現在位置の前後において一方が正規表現の
\w
([a-zA-Z_0-9]
)、もう一方が\W
に一致する場合をワード境界とみなす。
public fn Char
入力文字列に含まれる一文字に一致するパーサ。
- パラメータ
pattern
<String>
- パラメータ
except:
<BooleanClass>
一致すると失敗にする場合は
true
、成功にする場合はfalse
。既定値はfalse
。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:CharStruct>
- 補足
大文字と小文字を区別する。
public fn Choice
与えられたパーサを順に試して最初に成功した結果を返すパーサ。
- パラメータ
parsers
<Array[<Struct>]>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:ChoiceStruct>
public fn Context
解析対象の文字列を操作するためのオブジェクトを生成する。
- パラメータ
input
<String>
解析対象の文字列。
- 戻り値
<Struct:ContextStruct>
public fn Delay
パーサを遅延評価するパーサ。
- パラメータ
callback
<MAXScriptFunction>
パーサインスタンスを返す関数値。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:DelayStruct>
public fn Diff
パーサAに一致するもののうちパーサBに一致するものを除外するパーサ。
- パラメータ
parserA
<Struct>
- パラメータ
parserB
<Struct>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:PartialStruct>
public fn Digit
数字に一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:CharStruct>
public fn EOS
解析対象の文字列の終端に一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:EOSStruct>
public fn Expect
成功を期待するパーサが失敗した場合にエラーを記録するパーサ。
- パラメータ
parser
<Struct>
- パラメータ
expected:
<String>
期待する構文規則。既定値は
""
。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:ExpectStruct>
- 補足
expected
に渡す文字列のエスケープシーケンスは予めエスケープすること。
public fn Flatten
与えられたパーサが返す配列を一次元配列にするパーサ。
- パラメータ
parser
<Struct>
- パラメータ
depth:
<Integer>
統合する次元の深さ。
-1
で全ての次元を統合する。既定値は-1
。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:PartialStruct>
public fn Install
インストールする。
- 戻り値
<OkClass>
- 補足
静的メソッド。
public fn IsNot
入力したパーサが成功すれば失敗し、失敗すれば成功するパーサ。
- パラメータ
parser
<Struct>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:IsNotStruct>
- 補足
解析対象の文字列を消費しない。
public fn ItemAt
与えられたパーサが配列を返す時、指定したインデックスの要素を返すパーサ。
- パラメータ
parser
<Struct>
- パラメータ
index
<Integer>
-1
を指定した場合は最後の要素を取得する。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:PartialStruct>
public fn Join
与えられたパーサが返す配列の要素を全て文字列として連結するパーサ。
- パラメータ
parser
<Struct>
- パラメータ
separator:
<String>
区切り文字。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:PartialStruct>
public fn List
配列等の区切り文字で区切られた文字列を解析するパーサ。
- パラメータ
parser
<Struct>
- パラメータ
separator
<Struct>
区切り文字のパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:MapStruct>
- 補足
separator
にSkip
を使用すると失敗するので注意すること。
public fn Lookahead
先読みパーサ。
- パラメータ
parsers
<Array[<Struct>]>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:LookaheadStruct>
- 補足
2番目以降のパーサが成功した時、1番目のパーサの結果を返す。
解析対象の文字列は1番目のパーサ分だけ消費する。
失敗した場合は解析対象の文字列を消費しない。
public fn LowerAlphabet
小文字のアルファベットに一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:CharStruct>
public fn Many
与えられたパーサを失敗するまで繰り返し、結果を配列として返すパーサ。
- パラメータ
parser
<Struct>
- パラメータ
minCount:
<Integer>
最小繰り返し回数。既定値は
0
。
- パラメータ
maxCount:
<Integer>
最大繰り返し回数。既定値は
2147483647
。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:ManyStruct>
public fn Map
与えられたパーサの結果を加工するパーサ。
- パラメータ
parser
<Struct>
- パラメータ
callback
<MAXScriptFunction>
パーサの結果を引数に取る加工用の関数。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:MapStruct>
public fn Memo
パーサをメモ化する。
- パラメータ
parser
<Struct>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:MemoizeStruct>
- 補足
And
、Choice
、Lookahead
等のバックトラックが発生するパーサに使用すると効果が大きい。
public fn Option
与えられたパーサが失敗した場合でもNotCollectStruct
を返す(成功となる)パーサ。
- パラメータ
parser
<Struct>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:OptionStruct>
public fn Partial
パース結果を加工する関数を部分適用するためのパーサ。
- パラメータ
callback
<MAXScriptFunction>
加工用関数。
- パラメータ
callbackParameter
<Any>
加工用関数の引数。
- パラメータ
parser
<Struct>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:PartialStruct>
- 補足
加工用関数は第一引数に加工用のパラメータ、第二引数にパース結果を取ること。
public fn Sequence
与えられたパーサの結果を配列として返すパーサ。
- パラメータ
parsers
<Array[<Struct>]>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:SequenceStruct>
- 補足
パーサが一つでも失敗した場合はこのパーサも失敗する。
public fn Skip
与えられたパーサが失敗した場合は失敗し、成功した場合はNotCollectStruct
を返すパーサ。
- パラメータ
parser
<Struct>
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:MapStruct>
public fn SOS
解析対象の文字列の先端に一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:SOSStruct>
public fn Token
入力文字列に一致するパーサ。
- パラメータ
pattern
<String>
- パラメータ
ignoreCase:
<BooleanClass>
大文字と小文字を区別しない場合は
true
、区別する場合はfalse
。既定値はtrue
。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:TokenStruct>
public fn Uninstall
アンインストールする。
- 戻り値
<OkClass>
- 補足
静的メソッド。
public fn UpperAlphabet
大文字のアルファベットに一致するパーサ。
- パラメータ
debug:
<BooleanClass>
- 戻り値
<Struct:CharStruct>
private fn arrayItemAt
配列から指定したインデックスの要素を取得する。
- パラメータ
index
<Integer>
-1
を指定した場合は最後の要素を取得する。
- パラメータ
result
<Array[<Any>]|Struct:FailureStruct>
- 戻り値
<Any|Struct:FailureStruct>
result
が空配列または配列以外の場合、およびindex
が範囲外の場合はFailureStruct
を返す。
private fn asNotCollect
結果を常にNotCollectStruct
にする。
- パラメータ
result
<Any>
- 戻り値
<Struct:NotCollectStruct>
private fn cons
配列の2番目の要素を展開する。
- パラメータ
result
<Array[<Any>]|Struct:FailureStruct>
- 戻り値
<Array[<Any>]|Struct:FailureStruct>
private fn flattenArray
多次元配列を一次元配列にする。
- パラメータ
depth
<Integer>
統合する次元の深さ。
-1
で全ての次元を統合する。
- パラメータ
result
<Array[<Any>]>
- パラメータ
asString:
<BooleanClass>
要素を文字列化する場合は
true
、そのままにする場合はfalse
。既定値はfalse
。
- パラメータ
d:
<Integer>
現在の深さ。
- 戻り値
<Array[<Any>]>
- 補足
result
が配列以外の場合は何もしない。
private fn joinArray
配列の要素を全て文字列として連結する。
- パラメータ
separator
<String>
区切り文字。
- パラメータ
result
<Array[<Any>]>
- 戻り値
<String>
- 補足
result
が配列以外の場合は何もしない。
private version
- プロパティ
<Array[<Integer>]>
バージョン番号。メジャー、マイナー、パッチの順。
public fn StructName
- 戻り値
<Name>
public fn Dump
- パラメータ
indent:
<String>
- パラメータ
out:
<FileStream|StringStream|WindowStream>
出力先。既定値は
listener
。
- 戻り値
<OkClass>
public fn Equals
- パラメータ
obj
<Any>
- 戻り値
<BooleanClass>
- 補足
大文字と小文字を区別する。
public fn GetVersion
- 戻り値
<Array[<Integer>]>