問題タブ [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.
python - トークン化モジュール
助けてください
モジュールtokenizeには、STRING、BACKQUOTE、AMPEREQUALなどの多くのトークンがあります。
これは私が実験したものですが、それらが何を意味するのかを見つけることができませんでしたか?
そこから私はこれを理解します。私は即時の解決策が必要です。
c - C Tokenizer (フィールドが欠落している場合も空を返します。イェイ!)
strtok()
友人は空のフィールドをスキップしますが、そのような場合にスキップせずに空を返すように指示する方法がわかりません。
私が見ることができるほとんどのトークナイザーと同様の動作であり、私を始めさせることさえできませんsscanf()
(しかし、最初から空のフィールドで動作するとは決して言いませんでした)。
私は順調に進んでおり、眠気も感じているので、ここでレビューします。
ドライバーは次のとおりです。
はい、あなたはそれに気づきました。現在は単一の区切り文字に対してのみ機能しますが、もちろん、これには注意すべきバグが 1 つあります。
出力:
また、ネット上で同様のリクエストがたくさん見られたので、これを wiki にしています。
c++ - ブースト分割で escaped_list_separator を使用する
私はブースト文字列ライブラリをいじっていて、分割メソッドの驚くほど単純さに出くわしました.
これは素晴らしく簡潔です...しかし、引用符では機能しないようで、代わりに次のようなことをしなければなりません
私の質問は、区切り文字を引用しているときに、分割または別の標準アルゴリズムを使用できますか? パープルドッグのおかげで、私はすでに望ましい結果を達成するための非推奨の方法を持っています.さらに別の方法。
編集:結果を表示し、質問を明確にするためにコードを更新しました。
c++ - いくつかの特定のルールに応じてテキストをトークン化します。C++ のアルゴリズム
特定のルールに応じて入力テキストをトークン化するプログラムを作成しています。これにはC++を使用しています。
ルール
これは単なるサンプルであり、リアルタイムでこのような約 500 以上のルールがあります。「 appu 」として入力を提供している場合、「 VA + C-PPA + VU 」のようにトークン化する必要があります。これを行うためのアルゴリズムを実装しましたが、正しいことをしていることを確認したかったのです。
アルゴリズム
すべてのルールは、対応するトークンへのマッピングとともに XML ファイルに保持されます。何かのようなもの
1 - アプリケーションの開始時に、この xml ファイルを読み取り、値を「std::map」に保持します。これは、アプリケーションの終了 (シングルトン パターンの実装) まで使用できます。
2 - 入力テキスト文字を繰り返します。各文字について、一致するものを探します。見つかった場合は、より貪欲になり、入力テキストから次の文字を取得して、より多くの一致を探します。一致しない状態になるまでこれを行います。したがって、入力テキスト ' appu ' については、まず ' a 'に一致するものを探します。見つかった場合は、入力テキストから次の文字を取得して、さらに一致するようにします。そのため、' ap ' との一致を試みますが、一致するものは見つかりませんでした。だからそれはただ戻ってくる。
3 - トークンを取得したので、入力テキストの文字「a」を置き換えます。
4 - 入力テキストの残りの文字で手順 2 と 3 を繰り返します。
手順のより簡単な説明は次のとおりです
質問
1 - このアルゴリズムはこの問題に適しているように見えますか、それともこの問題に対処するためのより良い方法はありますか?
2 - これが正しい方法である場合、std::map はここで適切な選択ですか? または、独自のキー/値コンテナーを作成する必要がありますか?
3 - 上記のように文字列をトークン化できるライブラリはありますか?
どんな助けでもいただければ幸いです
:)
c++ - SIC Assembler ソースのトークン化
システム プログラミング クラス用の SIC アセンブラーのコーディングはほぼ完了しましたが、トークン化の部分で困惑しています。
たとえば、次のソース コード行を見てください。
形式 (自由形式) は次のとおりです。 {LABEL} OPCODE {OPERAND{,X}} {COMMENT}
カールは、フィールドがオプションであることを示します。
また、各フィールドは少なくとも 1 つのスペースまたはタブで区切る必要があります。
上記のコードは整理するのが少し簡単ですが、次のスニペットが問題を引き起こしています。
私のコードは、コメントの最初の単語を OPERAND であるかのように読み取ります。
これが私のコードです:
私の教授は、アセンブラを 2 つのバージョンのソース コード (エラーのあるバージョンとないバージョン) でテストするように要求しています。
RSUB OPCODE は OPERAND に依存していないため、RSUB OPCODE の後のすべてがコメントと見なされることは理解していますが、誤ったソース コードの OPERAND フィールドに値が含まれている場合、または OPERAND に依存する OPCODE が欠落している場合OPERAND 値、どうすればこれを補正できますか? これらにエラーとしてフラグを立て、誤った OPERAND 値 (またはその欠如) を出力する必要があります。
私の質問は、コードのコメント部分がオペランドと見なされないようにするにはどうすればよいですか?
python - Python3.0:トークン化とBytesIO
python3.0で文字列を作成しようとすると、トークンが開始する前にtokenize
先頭を取得するのはなぜですか?'utf-8'
python3 docsから、次のtokenize
ように使用する必要があります。
ただし、ターミナルでこれを試みると、次のことが起こります。
utf-8
他のトークンに先行するトークンとは何ですか?これは起こるはずですか?もしそうなら、私は常に最初のトークンをスキップする必要がありますか?
[編集]
トークンタイプ57はtokenize.ENCODINGであり、必要に応じてトークンストリームから簡単に除外できることがわかりました。
java - トークン化エラー: java.util.regex.PatternSyntaxException、ぶら下がっているメタ文字 '*'
次の形式split()
で区切られた文字列をトークン化するために使用しています。*
このコードを使用して、「entrada.al」という名前のファイルからこれを読んでいます。
そして、私はこの例外を受けています:
スレッド「メイン」での例外 java.util.regex.PatternSyntaxException: メタ文字 '*' がインデックス 0 付近でぶら下がっています *
私の推測では*
、元のテキスト ファイルにアフター エイジがないことが原因であると思われます。どうすれば回避できますか?
c++ - スイッチケースまたはstd::mapの方が効率的です
ここでトークナイザーについて考えています。
各トークンは、パーサー内で異なる関数を呼び出します。
より効率的なもの:
- std :: Functions / boost::functionsのマップ
- スイッチケース
python - Python3.0 - トークン化とトークン化解除
次の簡略化されたスクリプトに似たものを使用して、より大きなファイルから python のスニペットを解析しています。
コードは python2.x と同じではありませんが、同じイディオムを使用しており、問題なく動作します。ただし、python3.0 を使用して上記のスニペットを実行すると、次の出力が得られます。
このエラーとその原因への参照を検索しましたが、何も見つかりませんでした。私は何を間違っていますか?どうすれば修正できますか?
[編集]
ソースに改行を追加するとエラーが消えるというpartisannの観察の後、トークン化を解除していたリストをいじり始めました。EOF
トークンの直前に改行がないとエラーが発生するようですので、削除するとエラーが解消されます。次のスクリプトはエラーなしで実行されます。
c++ - C ++は、正規表現を使用して文字列をトークン化します
現在、C++をゼロから学ぼうとしています。
私はpython、perl、javascriptに精通していますが、過去に教室でC++に遭遇したのはほんのわずかです。私の質問の素朴な言い訳をしてください。
正規表現を使用して文字列を分割したいのですが、C ++でこれを行う方法の明確で、決定的で、効率的で、完全な例を見つけることができませんでした。
perlでは、これは一般的なアクションであり、したがって、簡単な方法で実行できます。
C++で同等の機能を実現するための最善の方法を知りたいです。
編集:
以下に説明するように、私はブーストライブラリで探していたものを見つけたと思います。
regex-token-iteratorをブーストします(アンダースコアが機能しないのはなぜですか?)
何を検索すればいいのかわからなかったと思います。