タグ付けされた質問 「parsing」

2
`syntax-ppss`はどの言語に適していますか?
現在のバッファがどのようにフォント化されているかを調べることにより、ポイントがコメント上にあるかどうかを検出する方法を検討しています。 Smartparensはsp-point-in-comment、に依存しsyntax-ppssます。しかし、ようだsyntax-ppssとparse-partial-sexp、彼らはS式を使用していない場合でも、任意の言語のために使用することができます。 たとえば、このPython: x = 1 # I'm a comment y = 2 コメント内にポイントを配置して評価(if (nth 4 (syntax-ppss)) 'comment 'not-comment)することは正しく機能します。 いsyntax-ppss任意のプログラミングモードのために仕事を?docstringsがs-expressionsを議論するのはなぜですか?

2
かっこだけでなく、キーワードで定義されたブロックをforward-sexpに認識させる
以下のようなキーワードで定義されたブロックを持った言語(ジュリア)でfor..end、begin..endだけでなく、カッコが、そのようなブロックをスキップする良い方法は何ですか?また、endblockキーワードだけでなく、他の場所で使用される有効な識別子でもあります。 1つの方法は、ブロックの開始/終了の正規表現を探し、すべての文字列、コメント、endsなどをスキップすることですが、これは多少効率が悪く、少し見苦しいです。 emacs独自の構文解析でこのようなブロックキーワードを認識させる方法はありますか?forward/backward-sexpそうすれば、自動的に機能し、現在のブロックの開始を、たとえばの出力からすばやく知ることができsyntax-ppssますか? [注:ファイルを自分で解析してもかまいませんが、その場合でも、パーサーを残りのemacsに接続する方法を知りたいと思います。]
10 syntax  parsing 

4
どうすれば(emacs lispから)括弧を見つけることができますか?
ポイントを囲む括弧のタイプ(つまり、 '('、 '['、または '{')を見つける方法はありますか?例(|ポイントを表すために使用) { abc, | df } '{'を返す必要があります。 { abc[ | ], 123 } '['を返す必要があります。理想的には、引用符も処理したいと思います。 誰かが好奇心が強い場合や詳細が必要な場合:私の目的は:、Pythonでelectric-spacing(smart-operatorとも呼ばれます)を使用してスマートな自動間隔を設定することです。問題は、通常(Pythonの場合):はスライス演算子またはfor / if / ...ステートメントの開始であり、スペースで囲まないでください。ただし、ディクショナリ内では代入演算子のようなものなので、スペースで囲む必要があります。私ので、ポイントはdictの(すなわち内部の内側にあるかどうかを確認する方法の必要性{})ではなく、(すなわちない内部その辞書内のスライス操作や文字列の内部[]または"")。 編集: 以下は、abo-aboの回答に基づいて私が作成したヘルパー関数です。 (defun enclosing-paren () "Return the closing parenthesis of the enclosing parens, or nil if not inside any parens." (ignore-errors (save-excursion (up-list) (char-before)))) 次に、最後の述語は次のとおりです。 (and (not (in-string-p)) …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.