私はthisチュートリアルに従おうとしており、チュートリアルで使用されている文法をpyparsing文法に変換するのは苦労しています。ブログの要点は、辞書の比較を解析し実行するための表現言語を作成することです。評価する独自のクラスを使用したpyparsing
properties = {
"name": "David Bowie",
"years_active2": 47
}
の式:
、彼らが使用文法は次のとおりです。
expr: literal { return $1 }
| "properties" "[" literal "]" { return PropertyLookup($3) }
| expr "[" expr "]" { return Index($1, $3) }
| expr "and" expr { return And($1, $3) }
| expr "==" expr { return Equals($1, $3) }
| expr ">" expr { return GreaterThan($1, $3) }
;
literal: QUOTED_STRING { return Literal($1) }
| DECIMAL_NUMBER { return Literal($1) }
;
これまでのところ、私が持っている:
string_literal = pp.Word(pp.alphas, pp.alphanums)
numeric_literal = pp.Word(pp.nums)
literal = string_literal | numeric_literal
properties = "properties" + "[" + literal + "]"
PropertyLookup()、インデックス() 、and()、Equals()、GreaterThan()はcustom clです表現を構築するために作成された尻。
4行目のプロパティを2行目と同じように変更するにはどうすればよいですか?私は、このような
class PropertyLookup(object):
def evaluate(self, props):
return props[self.key]
すべてのヘルプは高く評価されているPropertyLookup()などのカスタムクラスにリテラルを渡す方法については、主に困惑しています!
何を試しましたか?結果は何でしたか?期待していたものとどう違うのですか?チュートリアルを離れて枝分かれするには、*正確に*をコピーしてから変更を加えることが良い場合もあります。それが壊れた場合は、まだ動作している場所に戻って、あなたが何をしたのかを調べてください。 –