CurlSource (クラス)
public abstract sealed CurlSource {inherits Serializable, SourceLocation}
パッケージ: CURL.LANGUAGE.SOURCE

Curl ソース表現の抽象スーパー クラス。

説明

このクラスは、抽象ソース オブジェクト インターフェイスです。このクラスには、パーサーに対する各種レベルのアクセス (読み取り、スキャン、構文解析など) 用のメソッドが用意されています。すべてのソース オブジェクトは、このインターフェイスから継承します。

コンストラクタ
from-sequence:ソース コード部分のシーケンスから CurlSource を作成します。
ファクトリ 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
from-string:string から CurlSource を作成します。
ファクトリ public {CurlSource.from-string
string:StringInterface,
url:#Url = {string-url {string.to-String}},
location:int = 0,
line:int = 1,
column:int = 0
}:CurlSource

プロパティ
end-location:ファイル内のソース コード部分の終了オフセット。
アクセサ public abstract CurlSource.end-location:int
セッター package abstract CurlSource.end-location:int
file-info:基になるソース ファイルに関する情報。
アクセサ public abstract CurlSource.file-info:#SourceFileInfo
セッター package abstract CurlSource.file-info:#SourceFileInfo
start-location:ファイル内のソース コード部分の開始オフセット。
アクセサ public abstract CurlSource.start-location:int
セッター package abstract CurlSource.start-location:int
url:このソースのコードに関連付けられている URL。
アクセサ public final CurlSource.url:#Url

メソッド
get-text:ソースを文字列に変換します。
public {CurlSource.get-text index:ParseIndex = BOS}:StringInterface
identifier:このオブジェクトが Identifier の場合は、このオブジェクトを返します。
public {CurlSource.identifier}:#Identifier
infix-operator:中置式 (infix) の演算子の型を示します。
public {CurlSource.infix-operator}:OperatorKind
literal:オブジェクトが値を伴う Literal であるどうかを示します。
public {CurlSource.literal}:(any, bool)
location-to-line-column:文字オフセット (位置) を行と列に変換します。
public final {CurlSource.location-to-line-column
location:int
}:(int, int)
parse-error:構文エラーをレポートします。
public {CurlSource.parse-error
index:ParseIndex = BOS,
fmt:StringInterface,
...:any
}:never-returns
parse-expression:start で始まるソースからの式を構文解析します。
public final {CurlSource.parse-expression
start:ParseIndex
}:(#Parsed, ParseIndex)
parse-head:Curl ブラケット内の式の先頭を構文解析します。
public final {CurlSource.parse-head
start:ParseIndex
}:(#Parsed, ParseIndex)
parse-keywords:ソースからのカンマ区切りのキーワード引数を構文解析します。
public final {CurlSource.parse-keywords
start:ParseIndex,
skip-trailing-whitespace?:bool = true
}:({Array-of SingleBinding}, ParseIndex)
parse-parameters:カンマ区切りのパラメータのシーケンスを構文解析します。
public final {CurlSource.parse-parameters
start:ParseIndex,
expect-EOS?:bool = true
}:({Array-of Parsed}, ParseIndex)
parse-text:start で始まるソースからのテキストを構文解析します。
public abstract {CurlSource.parse-text
start:ParseIndex,
cooked?:bool = true,
skip-whitespace?:bool = true,
whitespace-chars:CharClass = text-whitespace-chars
}:(#CurlSource, ParseIndex)
parse-token:start で始まるソースからの "トークン" を構文解析します。
public abstract {CurlSource.parse-token
start:ParseIndex
}:(#Parsed, ParseIndex)
parse-verbatim:start で始まる verbatim 文字列を構文解析します。
public final {CurlSource.parse-verbatim start:ParseIndex}:CurlSource
skip-whitespace:start で始まるソース内の空白文字を省略します。
public abstract {CurlSource.skip-whitespace
start:ParseIndex,
whitespace-chars:CharClass = CharClass.whitespace-chars
}:ParseIndex
token-operator:演算子の型を示します。
public {CurlSource.token-operator}:OperatorKind
メソッド 継承 SourceLocation: get-url-line-column
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
from-sequence (ファクトリ)
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?: ソースの位置情報をコード部分から推測する必要があるかどうかを判断します。

説明

srcstartend の各引数は、このオブジェクトの SourceLocation 属性の計算に使用されます。


from-string (ファクトリ)
public {CurlSource.from-string
string:StringInterface,
url:#Url = {string-url {string.to-String}},
location:int = 0,
line:int = 1,
column:int = 0
}:CurlSource

string から CurlSource を作成します。

url: このソースに関連付けられている URL です。既定では、このパラメータは string から作成される string-url です。
location: このソースの先頭に関連付けられる url 内の文字オフセットです。このパラメータは、指定された linecolumn に対応します。
line: このソースの先頭に関連付けられる url 内の行です。
column: このソースの先頭に関連付けられる url 内の列です。

説明

url で指定されたファイルの一部を読み取って string が得られた場合は、urllocationlinecolumn の各引数を使用します。



プロパティ詳細
end-location (アクセサ)
アクセサ public abstract CurlSource.end-location:int
セッター package abstract CurlSource.end-location:int

ファイル内のソース コード部分の終了オフセット。



file-info (アクセサ)
アクセサ public abstract CurlSource.file-info:#SourceFileInfo
セッター package abstract CurlSource.file-info:#SourceFileInfo

基になるソース ファイルに関する情報。



start-location (アクセサ)
アクセサ public abstract CurlSource.start-location:int
セッター package abstract CurlSource.start-location:int

ファイル内のソース コード部分の開始オフセット。



url (アクセサ)
アクセサ public final CurlSource.url:#Url

このソースのコードに関連付けられている URL。

説明

不明な場合は、NULL になる可能性があります。





メソッド詳細
get-text (メソッド)
public {CurlSource.get-text index:ParseIndex = BOS}:StringInterface

ソースを文字列に変換します。

説明

指定された index から始まるソース オブジェクトを文字列に変換します。

結果の文字列を構文解析して同じオブジェクトに戻すことはできません。


identifier (メソッド)
public {CurlSource.identifier}:#Identifier

このオブジェクトが Identifier の場合は、このオブジェクトを返します。

説明

それ以外の場合は、NULL を返します。


infix-operator (メソッド)
public {CurlSource.infix-operator}:OperatorKind

中置式 (infix) の演算子の型を示します。

説明

オブジェクトが Infix (中置) の場合は、演算の OperatorKind を返し、それ以外の場合は、OperatorKind.NONE を返します。


literal (メソッド)
public {CurlSource.literal}:(any, bool)

オブジェクトが値を伴う Literal であるどうかを示します。

説明

オブジェクトが Literal の場合は (値, true) を返し、それ以外の場合は (NULL, false) を返します。


location-to-line-column (メソッド)
public final {CurlSource.location-to-line-column
location:int
}:(int, int)

文字オフセット (位置) を行と列に変換します。



parse-error (メソッド)
public {CurlSource.parse-error
index:ParseIndex = BOS,
fmt:StringInterface,
...:any
}:never-returns

構文エラーをレポートします。

説明

fmt および指定された ... 引数と共に format を呼び出すことによって、作成されたメッセージを使用して構文エラーをレポートします。ソースの位置情報は、ソース オブジェクトおよび index のオプションのオフセットから得られます。


parse-expression (メソッド)
public final {CurlSource.parse-expression
start:ParseIndex
}:(#Parsed, ParseIndex)

start で始まるソースからの式を構文解析します。

説明

ソースからの Curl 式を構文解析し、それを式の後のソースのインデックスと共に返します。このメソッドは、以下をはじめとする Curl の各種 中置構文(infix)を構文解析する点を除けば、CurlSource.parse-token に類似しています。



Greedy (欲張りな) 構文解析とは、1 つの式を生成する間にできる限り構文解析しようとすることです。たとえば、次の式が与えられているとします。

a + b - c


この場合は、ソースの位置情報を無視して、parse-expression が返されます。

{BinaryOp
    OperatorKind.Minus,
    {BinaryOp
        OperatorKind.Plus,
        {Identifier "a"},
        {Identifier "b"}
    },
    {Identifier "c"}
}


parse-head (メソッド)
public final {CurlSource.parse-head
start:ParseIndex
}:(#Parsed, ParseIndex)

Curl ブラケット内の式の先頭を構文解析します。

説明

Curl ブラケット内の式の先頭を構文解析します。一般に、これが当てはまるのは Prefix 式の内容の構文解析を開始する場合に限ります。

使用できる演算子は、'.'、'['、(...)、および {...} だけです。


parse-keywords (メソッド)
public final {CurlSource.parse-keywords
start:ParseIndex,
skip-trailing-whitespace?:bool = true
}:({Array-of SingleBinding}, ParseIndex)

ソースからのカンマ区切りのキーワード引数を構文解析します。

start: ソース内の構文解析の開始位置を示します。
skip-trailing-whitespace?: true の場合、最後のキーワード引数の後の空白文字はキーワードの部分と見なされ、返されるインデックスは空白文字の後になります。false の場合、返されるインデックスは、そのインデックスが空白文字を参照しているかどうかにかかわらず、最後のキーワードの直後になります。

説明

構文解析されたキーワード引数を表す SingleBinding の配列、および最後のキーワードの後のソースへのインデックスを返します。キーワードがない場合は、空の配列を返します。

各キーワードは、次の形式で指定する必要があります。

identifier = expression


parse-parameters (メソッド)
public final {CurlSource.parse-parameters
start:ParseIndex,
expect-EOS?:bool = true
}:({Array-of Parsed}, ParseIndex)

カンマ区切りのパラメータのシーケンスを構文解析します。

expect-EOS?: 最後のパラメータの後に追加ソースが必要かを示しています。 もし true で更に、最後のパラメータの後に解析するソ-スが残っている場合は、構文エラーがスローされます。

説明

start で始まるソースからの、カンマで区切られた式のシーケンスを構文解析します。式の配列を返します。


parse-text (メソッド)
public abstract {CurlSource.parse-text
start:ParseIndex,
cooked?:bool = true,
skip-whitespace?:bool = true,
whitespace-chars:CharClass = text-whitespace-chars
}:(#CurlSource, ParseIndex)

start で始まるソースからのテキストを構文解析します。

start: ソース内の構文解析の開始位置を示します。
cooked?: テキスト内のエスケープ シーケンスを処理するかどうかを指定します。
skip-whitespace?: 先頭の空白文字を省略する必要があるかどうかを示します。
whitespace-chars: 空白文字と見なされる文字のセットを示します。

説明

次の構文解析されていない要素とその後の要素へのインデックスを返します。

最初の要素が既に構文解析されている場合 (つまり、isa Parsed オブジェクト)、このメソッドは、start が BOS であればこのオブジェクトを返し、それ以外は NULL を返します。まだ構文解析されていない場合、このメソッドは、以下のいずれかを返します。



parse-token (メソッド)
public abstract {CurlSource.parse-token
start:ParseIndex
}:(#Parsed, ParseIndex)

start で始まるソースからの "トークン" を構文解析します。

説明

start で始まる現在のソースからの付属ソース オブジェクトを構文解析します。トークンとその後のトークンへのインデックスを返すか、NULL と EOS を返します。

ソースが以前に構文解析されている場合 (つまり、isa Parsed)、このメソッドは、start が BOS であればこのオブジェクトを返し、それ以外は NULL を返します。

ソースが構文解析されなかった場合、結果として得られるオブジェクトは次のいずれかです。



ソースが Parsed である場合は、このパッケージから別の型のソース オブジェクト (BinaryOp など) が返される可能性があります。


parse-verbatim (メソッド)
public final {CurlSource.parse-verbatim start:ParseIndex}:CurlSource

start で始まる verbatim 文字列を構文解析します。

説明

エスケープ シーケンスを処理せずに、start で始まる、ソースの残りの未変更部分を返します。


skip-whitespace (メソッド)
public abstract {CurlSource.skip-whitespace
start:ParseIndex,
whitespace-chars:CharClass = CharClass.whitespace-chars
}:ParseIndex

start で始まるソース内の空白文字を省略します。

start: ソース内の構文解析の開始位置を示します。
whitespace-chars: 空白文字と見なされる文字のセットを示します。既定値は、Unicode 空白文字のセットです。コードを構文解析するときに code-whitespace-chars を使用し、テキストを構文解析するときに text-whitespace-chars を使用します。

説明

start の後にある最初の非空白文字の構文解析インデックスを返します。省略する空白文字がない場合、このメソッドは start を返す可能性があります。


token-operator (メソッド)
public {CurlSource.token-operator}:OperatorKind

演算子の型を示します。

説明

オブジェクトが Operator の場合は OperatorKind を返し、それ以外の場合は OperatorKind.NONE を返します。