(クラス)
Curl ソース表現の抽象スーパー クラス。
説明
このクラスは、抽象ソース オブジェクト インターフェイスです。このクラスには、パーサーに対する各種レベルのアクセス (読み取り、スキャン、構文解析など) 用のメソッドが用意されています。すべてのソース オブジェクトは、このインターフェイスから継承します。
ファクトリ public | {CurlSource.from-sequence src:#SourceLocation = null,start:int = {default-start-location src},end:int = {default-end-location src},source-info-from-fragments?:bool = false,...:#Object }:CurlSource |
アクセサ public abstract CurlSource.end-location:
int セッター package abstract CurlSource.end-location:
int
アクセサ public abstract CurlSource.start-location:
int セッター package abstract CurlSource.start-location:
int
url: | このソースのコードに関連付けられている URL。 |
アクセサ public final CurlSource.url:#
Url
public | {CurlSource.literal}:(any, bool) |
public final | {CurlSource.location-to-line-column}:(int, int) |
public final | {CurlSource.parse-expression}:(#Parsed, ParseIndex) |
public final | {CurlSource.parse-head}:(#Parsed, ParseIndex) |
public final | {CurlSource.parse-keywords}:({Array-of SingleBinding}, ParseIndex) |
public final | {CurlSource.parse-parameters}:({Array-of Parsed}, ParseIndex) |
public abstract | {CurlSource.parse-text}:(#CurlSource, ParseIndex) |
public abstract | {CurlSource.parse-token}:(#Parsed, ParseIndex) |
public abstract | {CurlSource.skip-whitespace}:ParseIndex |
(ファクトリ)
public | {CurlSource.from-sequence src:#SourceLocation = null,start:int = {default-start-location src},end:int = {default-end-location src},source-info-from-fragments?:bool = false,...:#Object }:CurlSource |
ソース コード部分のシーケンスから CurlSource を作成します。
...: 各引数には、
CurlSource または
{Array-of CurlSource} を指定できます。ネストされたシーケンスと配列は、平滑化され、継ぎ合わされます。
source-info-from-fragments?: ソースの位置情報をコード部分から推測する必要があるかどうかを判断します。
説明
(ファクトリ)
string から CurlSource を作成します。
url: このソースに関連付けられている URL です。既定では、このパラメータは
string から作成される
string-url です。
location: このソースの先頭に関連付けられる url 内の文字オフセットです。このパラメータは、指定された line と column に対応します。
line: このソースの先頭に関連付けられる url 内の行です。
column: このソースの先頭に関連付けられる url 内の列です。
説明
url で指定されたファイルの一部を読み取って string が得られた場合は、url、location、line、column の各引数を使用します。
(アクセサ)
アクセサ public abstract CurlSource.end-location:
int セッター package abstract CurlSource.end-location:
int
(アクセサ)
(アクセサ)
アクセサ public abstract CurlSource.start-location:
int セッター package abstract CurlSource.start-location:
int
(アクセサ)
アクセサ public final CurlSource.url:#
Url このソースのコードに関連付けられている URL。
説明
不明な場合は、NULL になる可能性があります。
(メソッド)
ソースを文字列に変換します。
説明
指定された index から始まるソース オブジェクトを文字列に変換します。
結果の文字列を構文解析して同じオブジェクトに戻すことはできません。
(メソッド)
このオブジェクトが Identifier の場合は、このオブジェクトを返します。
説明
それ以外の場合は、NULL を返します。
(メソッド)
中置式 (infix) の演算子の型を示します。
説明
(メソッド)
public | {CurlSource.literal}:(any, bool) |
オブジェクトが値を伴う Literal であるどうかを示します。
説明
オブジェクトが
Literal の場合は (値, true) を返し、それ以外の場合は (NULL, false) を返します。
(メソッド)
public final | {CurlSource.location-to-line-column}:(int, int) |
(メソッド)
構文エラーをレポートします。
説明
fmt および指定された
... 引数と共に
format を呼び出すことによって、作成されたメッセージを使用して構文エラーをレポートします。ソースの位置情報は、ソース オブジェクトおよび
index のオプションのオフセットから得られます。
(メソッド)
public final | {CurlSource.parse-expression}:(#Parsed, ParseIndex) |
start で始まるソースからの式を構文解析します。
説明
ソースからの Curl 式を構文解析し、それを式の後のソースのインデックスと共に返します。このメソッドは、以下をはじめとする Curl の各種 中置構文(infix)を構文解析する点を除けば、
CurlSource.parse-token に類似しています。
- Curl 演算子は、UnaryOp オブジェクトおよび BinaryOp オブジェクトとして構文解析されます。
次の形式の変数バインド。
name[:type][ = value]
ここで、
:type または
= value の少なくとも 1 つが指定されると、
SingleBinding として構文解析されます。それ以外が指定されても、識別子として構文解析されるだけです。
かっこ内のカンマで区切られた、次の形式の式のシーケンス。
(expression1, expression2 [,...])
Greedy (欲張りな) 構文解析とは、1 つの式を生成する間にできる限り構文解析しようとすることです。たとえば、次の式が与えられているとします。
この場合は、ソースの位置情報を無視して、
parse-expression が返されます。
{BinaryOp
OperatorKind.Minus,
{BinaryOp
OperatorKind.Plus,
{Identifier "a"},
{Identifier "b"}
},
{Identifier "c"}
}
(メソッド)
public final | {CurlSource.parse-head}:(#Parsed, ParseIndex) |
Curl ブラケット内の式の先頭を構文解析します。
説明
Curl ブラケット内の式の先頭を構文解析します。一般に、これが当てはまるのは
Prefix 式の内容の構文解析を開始する場合に限ります。
使用できる演算子は、'.'、'['、(...)、および {...} だけです。
(メソッド)
public final | {CurlSource.parse-keywords}:({Array-of SingleBinding}, ParseIndex) |
ソースからのカンマ区切りのキーワード引数を構文解析します。
start: ソース内の構文解析の開始位置を示します。
skip-trailing-whitespace?: true の場合、最後のキーワード引数の後の空白文字はキーワードの部分と見なされ、返されるインデックスは空白文字の後になります。false の場合、返されるインデックスは、そのインデックスが空白文字を参照しているかどうかにかかわらず、最後のキーワードの直後になります。
説明
構文解析されたキーワード引数を表す
SingleBinding の配列、および最後のキーワードの後のソースへのインデックスを返します。キーワードがない場合は、空の配列を返します。
各キーワードは、次の形式で指定する必要があります。
identifier = expression
(メソッド)
public final | {CurlSource.parse-parameters}:({Array-of Parsed}, ParseIndex) |
カンマ区切りのパラメータのシーケンスを構文解析します。
expect-EOS?: 最後のパラメータの後に追加ソースが必要かを示しています。 もし true で更に、最後のパラメータの後に解析するソ-スが残っている場合は、構文エラーがスローされます。
説明
start で始まるソースからの、カンマで区切られた式のシーケンスを構文解析します。式の配列を返します。
(メソッド)
public abstract | {CurlSource.parse-text}:(#CurlSource, ParseIndex) |
start で始まるソースからのテキストを構文解析します。
start: ソース内の構文解析の開始位置を示します。
skip-whitespace?: 先頭の空白文字を省略する必要があるかどうかを示します。
whitespace-chars: 空白文字と見なされる文字のセットを示します。
説明
次の構文解析されていない要素とその後の要素へのインデックスを返します。
最初の要素が既に構文解析されている場合 (つまり、isa
Parsed オブジェクト)、このメソッドは、
start が BOS であればこのオブジェクトを返し、それ以外は NULL を返します。まだ構文解析されていない場合、このメソッドは、以下のいずれかを返します。
(メソッド)
public abstract | {CurlSource.parse-token}:(#Parsed, ParseIndex) |
start で始まるソースからの "トークン" を構文解析します。
説明
start で始まる現在のソースからの付属ソース オブジェクトを構文解析します。トークンとその後のトークンへのインデックスを返すか、NULL と
EOS を返します。
ソースが以前に構文解析されている場合 (つまり、isa
Parsed)、このメソッドは、
start が BOS であればこのオブジェクトを返し、それ以外は NULL を返します。
ソースが構文解析されなかった場合、結果として得られるオブジェクトは次のいずれかです。
ソースが
Parsed である場合は、このパッケージから別の型のソース オブジェクト (
BinaryOp など) が返される可能性があります。
(メソッド)
start で始まる verbatim 文字列を構文解析します。
説明
(メソッド)
public abstract | {CurlSource.skip-whitespace}:ParseIndex |
start で始まるソース内の空白文字を省略します。
start: ソース内の構文解析の開始位置を示します。
説明
start の後にある最初の非空白文字の構文解析インデックスを返します。省略する空白文字がない場合、このメソッドは start を返す可能性があります。
(メソッド)