式の数量詞: Greedy、Reluctant、および Possessive な動作

デフォルトでは、数量詞は Greedy な動作を行います。Greedy な動作とは、式が、マッチを成立させつつ、できる限り多くのトークンを消費しようとすることを意味します。この動作は、'?' を付加することによって Reluctant なマッチングに、'+' を付加することによって Possessive なマッチングに変更することができます。

Reluctant なマッチングとは、式が、マッチを成立させつつ、できる限り少なくトークンを消費しようとすることを意味します。

Possessive なマッチングとは、マッチの成立が妨げられる場合であっても、できる限り多くのトークンを消費しようとすることを意味します。

  • 1 回以上の数量詞の例

    Greedy

    1. <Field1> の Greedy な動作は、ルールにマッチする最大数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は、<Field1> によって放棄が強制される最小数のトークンのみを受け入れます。
    3. <Field3> は、<Field1> によって放棄が強制される単一のトークンのみを受け入れます。

    Reluctant

    1. <Field1> の Reluctant な動作は、ルールにマッチする最小数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は Greedy であり、<Field1> によって放棄された最大数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    3. <Field3> は、<Field2> によって放棄が強制される単一のトークンのみを受け入れます。

    Possessive

    1. <Field1> の Possessive な動作は、ルールにマッチする最大数のトークンを受け入れつつ、残りのルールにマッチするトークンはいっさい放棄しません。
    2. <Field1> は Possessive なので、<Field2> で使用できるトークンはありません。3. <Field1> は Possessive なので、<Field3> で使用できるトークンはありません。
    3. 入力はパースされません。

    0 回以上の数量詞の例

    Greedy

    1. <Field1> の Greedy な動作は、ルールにマッチするいっさいのトークンまたは最大数のトークンを受け入れず、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field1> は Greedy なので、<Field2> は <Field1> によって放棄が強制される最小数のトークンのみを受け入れます。<Field2> の最小数は 0 なので、0 のトークンはこのルールにマッチします。
    3. <Field1> は Greedy なので、<Field3> は <Field1> によって放棄が強制される単一のトークンのみを受け入れます。

    Reluctant

    1. <Field1> の Reluctant な動作は、ルールにマッチするいっさいのトークンまたは最小数のトークンを受け入れず、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は Greedy であり、<Field1> によって放棄された最大数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    3. <Field3> は、<Field2> によって放棄が強制される単一のトークンのみを受け入れます。

    Possessive

    1. <Field1> の Possessive な動作は、ルールにマッチするいっさいのトークンまたは最大数のトークンを受け入れず、残りのルールにマッチするトークンを放棄しません。
    2. <Field1> は Possessive なので、<Field2> で使用できるトークンはありません。
    3. <Field1> は Possessive なので、<Field3> で使用できるトークンはありません。入力はパースされません。

    0 または 1 回の数量詞の例

    Greedy

    1. <Field1> の Greedy な動作は、ルールにマッチするいっさいのトークンまたは最大数のトークンを受け入れず、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は、<Field1> によって放棄が強制される最小数のトークンのみを受け入れます。
    3. <Field3> は、<Field1> によって放棄が強制される単一のトークンのみを受け入れます。

    Reluctant

    1. <Field1> の Reluctant な動作は、ルールにマッチする最小数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は Greedy であり、<Field1> によって放棄された最大数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    3. <Field3> は、<Field2> によって放棄が強制される単一のトークンのみを受け入れます。

    Possessive

    1. <Field1> の Possessive な動作は、ルールにマッチするいっさいのトークンまたは最大数のトークンを受け入れず、残りのルールにマッチするトークンを放棄しません。
    2. <Field1> は Possessive なので、<Field2> で使用できるトークンは 1 つだけです。
    3. <Field1> は Possessive なので、<Field3> で使用できるトークンはありません。入力はパースされません。

  • Min/Max 数量詞の例

    Greedy

    1. <Field1> ルールの Reluctant な動作は、ルールにマッチする最小数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は、<Field1> によって放棄が強制される最小数のトークンのみを受け入れます。
    3. <Field3> は、<Field1> によって放棄が強制される単一のトークンのみを受け入れます。

    Reluctant

    1. <Field1> の Reluctant な動作は、ルールにマッチする最小数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    2. <Field2> は Greedy であり、<Field1> によって放棄された最大数のトークンを受け入れつつ、残りのルールにマッチするために必要な場合にのみトークンを放棄します。
    3. <Field3> は、<Field2> によって放棄が強制される単一のトークンのみを受け入れます。

    Possessive

    1. <Field1> の Possessive な動作は、ルールにマッチする最大数のトークンを受け入れつつ、残りのルールにマッチするトークンはいっさい放棄しません。
    2. <Field1> は Possessive なので、<Field2> で使用できるトークンは 2 つあります。
    3. <Field3> は、<Field2> によって放棄が強制される単一のトークンのみを受け入れます。