問題タブ [tokenize]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
parsing - 実際のアプリケーションでレクサー/パーサーを効果的に使用したことがありますか?
最近、ANTLRの学習を始めました。レクサー/パーサーを一緒に使用してプログラミング言語を構築できることを知っています。
DSL やプログラミング言語以外で、レクサー/パーサー ツール (および知識) を直接的または間接的に使用して、現実の問題を解決したことがありますか? レクサーやパーサーの知識がなくても、平均的なプログラマーがこれらの問題を解決できるでしょうか?
c - フォーマット文字列に基づくスマート可変個引数拡張
何かを書き込む場所を知るために構成ファイルを読み取るデーモンがあります。構成ファイルには、次のような行があります。
または、次のようになります。
...または単にこのように:
...または最後に:
プログラム内にcfg->pathfmtとしてその行があります。私が今やろうとしているのは、それを賢く使う方法を考え出すことです。
もう少し説明すると、パスにはフォーマットするコンポーネントを最大2つ含めることができます。%dはジョブID(int)として展開され、%sはジョブ名(string)として展開されます。ユーザーは、構成ファイルで1つ、両方、または何も使用したくない場合があります。最終的にsnprintf()に渡す前に、彼らが何をどのような順序で望んでいるかを知る必要があります。少し絞り込むことはできますが、strtok()と話したいので、醜いようです。
私はユーザーにこの種の柔軟性を提供したいのですが、それを実装するための賢明でポータブルな方法を探すことに迷っています。私はまた、これを探し始める方法について完全にそして完全に途方に暮れています。
次の場合はとても嬉しいです:
- 誰かが私が良い例を見つけるために検索フレーズを絞り込むのを手伝ってくれるかもしれません
- 誰かがこれを実装するOSSプロジェクトへのリンクを投稿する可能性があります
- 誰かが疑似コードを投稿する可能性があります
私は自分のためにコードを書いてほしくありません。私は(私が思うに)非常に単純なものであるべきものに本当に固執していて、最初の一口を取るのに助けが必要です。当たり前のことを考えすぎて見落としているような気がします。
最終結果は、次のようなブール関数になります。
次に、j-> outpathでsnprintf()を(適切に)呼び出し、ある種のガベージ(つまり、%の後にs、d、または%以外のものが続く)が構成行(またはそのnull)にある場合はfalseを返します。健全性チェックは簡単です。フォーマットを正しくするための引数の数(および順序)を取得するのに少し時間がかかっています。
前もって感謝します。また、評判がよければ、このタイトルを自由に編集してください。私が言ったように、1行で質問する方法がよくわかりません。必要なのはパーサーだと思いますが、本格的なレクサー/パーサーを使用して1つの単純な文字列を処理するのは厄介です。
html - HTMLを無視して文字列を長さにトリミングします
この問題は難しい問題です。私たちのアプリケーションは、ユーザーがホームページにニュースを投稿することを可能にします。そのニュースは、HTMLを許可するリッチテキストエディタを介して入力されます。ホームページでは、ニュース項目の切り捨てられた要約のみを表示したいと思います。
たとえば、HTMLを含む表示している全文は次のとおりです
オフィスやキッチンのスペースをもう少し増やすために、ランダムなマグカップをすべて引き出して、ランチルームのテーブルに置きました。1992年のCheyenneCourierマグカップ、または1997年のBC Tel Advanced Communicationsマグカップの所有権について強く感じない限り、それらは箱に入れられ、私たちよりもマグカップを必要としているオフィスに寄付されます。
ニュースアイテムを250文字にトリミングしますが、HTMLは除外します。
現在、トリミングに使用している方法にはHTMLが含まれているため、HTMLが重いニュース投稿の一部が大幅に切り捨てられます。
たとえば、上記の例に大量のHTMLが含まれている場合、次のようになる可能性があります。
オフィスやキッチンにもう少しスペースを空けるために、引っ張ってきました...
これは私たちが望んでいることではありません。
文字列内の位置を維持し、文字列の長さチェックやトリミングを実行し、文字列内のHTMLを古い場所に復元するために、HTMLタグをトークン化する方法はありますか?
java - Javaで入力を文字単位で読み取るにはどうすればよいですか?
私は c-style に慣れていますgetchar()
が、Java に匹敵するものはないようです。字句解析器を作成していますが、入力を 1 文字ずつ読み込む必要があります。
スキャナーを使用してトークンまたは行をスキャンし、トークンの文字ごとに解析できることはわかっていますが、複数行にまたがる文字列の場合は扱いにくいようです。Java の入力バッファから次の文字を取得する方法はありますか、それとも Scanner クラスをプラグインする必要がありますか?
入力はキーボードではなくファイルです。
c# - C#コードのXML表現を作成する必要があります
C#コードを同等のXML表現に変換する必要があります。
C#コード(C#2.0コードスニペット、ジェネリックまたはnull許容型なし)をASTに変換してから、ASTをXMLに変換する予定です。ASTを出力するC#用の単純なレクサー/パーサーを探しています。
C#コードをXML表現(C#に戻すことができます)に変換するためのポインターも非常に役立ちます。
敬具、
c++ - 豚ラテン語へのトークン化と変換
これは宿題のように見えますが、宿題ではありませんのでご安心ください。C++ コースで使用する本の練習問題として、ポインターを先読みしようとしています。
この本の演習では、文をトークンに分割し、それぞれを豚ラテン語に変換してから表示するように指示されています..
pig latin は基本的にこのようになっています: ball は allboy in piglatin.. boy は oybay になります.. 最初の文字を取り出し、最後に置き、「ay」を追加します.
これまでのところ、これは私が持っているものです:
トークン化の部分は非常に明確に理解していますが、豚のラテン語を行う方法がわかりません..単に「ay」をトークンに追加することから始めて、結果がどうなるかを確認しようとしました..なぜプログラムが入るのかわかりません無限ループと「ayay」を表示し続けます..何かヒントはありますか?
編集:これは現在正常に動作しますが、「ay」を追加する前にトークンの最初の文字を追加する方法がわかりません
編集:これは私がそれを「見る」方法ですが、正しく実装する方法がわかりません..