TXRで再帰的パターンマッチング関数を書く方法を理解できません。以下では、ファイルパスを認識するための再帰的なディレクティブを定義しようとします。私はこの場合、正規表現([a-z]+\/)+[a-z]+
でこの文法を表すことができますが、実際のコードではより複雑なルールが念頭に置かれています。スラッシュがあるときにこのディレクティブが失敗する原因は何ですか?TXR:再帰的パターンマッチディレクティブを書き込む
@(define location)@\
@ (cases)@\
@/[a-z]+/@\
@ (or)@\
@/[a-z]+//@(location)@\
@ (end)@\
@(end)
@(repeat)
@(cases)
@{location (location)}
@ (output)
@location is a valid location.
@ (end)
@(or)
@location
@ (output)
@location is not a valid location.
@ (end)
@(end)
@(end)
例有効な入力:。/[a-z]+(\/[a-z]+)*/
私はと仮定しています:
this/is/valid
this/is/also/valid
this
a/b/c
私は "乗算と降伏"を覚えています:) – wdkrnls
ここでは "乗算と降伏"の男がいるので、あなたはそれをどこかの属性にすることができます:https://www.math.ubc.ca/~anstee/ – Kaz