問題タブ [lexical]
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.
c++ - シンプルな方法からシンプルなパーサーへ
次の構造に従う単純なパーサーと小さなテキスト ファイルを作成しようとしています。
変数名 = 値;
VARIABLE_2 = SECOND_VALUE;
ただし、機能するメソッドが見つかった場合は、Boost などの多くのライブラリを使用します。できればSTDのライブラリだけで簡単に作成できるのだろうか。
ありがとう、ブルーノ・アラノ。
javascript - レキシカル スコープの変数は、getJSON 呼び出しで上書きされた後も値を保持します
この投稿の最後のコードでは、変数pPrice
は を介して定義
$(addProduct).attr(attrProductPrice);
され、JSON 呼び出しを介して設定されます
$.getJSON(url, function(data) { console.log(data); pPrice = data.price; });
が、同期.getJSON
呼び出しの後、値は元の値に戻ります。
.getJSON
呼び出しを介して字句スコープ変数の定義の定義を上書きするにはどうすればよいですか? ソースコードは関連する部分に省略されています:
dynamic - Common Lispスコープ(動的vs字句)
編集:同じ質問をする簡単なバージョンを思いついたので、最初の答えの後にサンプルコードを変更しました。
私は現在、CommonLispのスコープ特性を学んでいます。しっかりと理解したと思った後、結果を予測できるいくつかの例をコーディングすることにしましたが、明らかに間違っていました。私は3つの質問があり、それぞれが以下の例に関連しています。
例1:
出力:
質問:これは理にかなっています。xは静的スコープであり、fun2には、xの値を明示的に渡さずに見つける方法がありません。
例2:
出力:
質問:xが100の値ではなく、fun1が与えた値でfun2に突然表示される理由がわかりません...
例3:
出力:
質問:宣言されていない変数でsetfを呼び出すことは明らかに未定義なので、これらの結果を無視する必要がありますか?これは、2番目の例で期待することです...
任意の洞察をいただければ幸いです...
java - Java で単純な字句アナライザーを作成する
基本的な「作成された」言語のテキスト入力および出力トークンを読み取る必要があり、呼び出されたときにトークンを出力する必要がある語彙アナライザーを作成しています。識別子、定数などを、事前に決定したリストから区別したいと思います。
入力ストリームを使用してテキスト ファイルを読み取る必要があります。while ループは文字を個別にループしますが、スキャンされた文字が識別子であるか、「+」「-」「*」「/」などであるかを認識する必要があります...これを行う最良の方法は何ですか?
私はプログラミングにかなり慣れていないので、これを構築する方法についてアドバイスをいただければ幸いです。答えてくれてありがとう
lexical - 語彙エラー:キーワードのスペルミス
ドラゴンブックでは、「字句エラーには、識別子、キーワード、または演算子のスペルミスが含まれます」と記載されています
語彙アナライザーがキーワードのスペルミスをどのように見つけて、スペルミスのキーワードを識別子と見なさないのか、少し混乱しています。
parsing - Scala で Lexical/StdLexical に position を追加する
私は、動作に関していくつかの変更を加えた StdLexical の流れでレクサーを作成しています (ただし、私の質問の目的のために、それを StdLexical に追加する方法のデモンストレーションは問題ありません)。トークンの位置を記録するためのサポートを追加しようとしていますが、問題が発生しています。単純に追加しようとするpositioned
と、完全に予期しないエラーが発生します。これは、基本的に、positioned
位置を出力しないパーサーでは実行できないことを示しています。
では、位置パーサーを使用できるようにレクサーへの入力を制限するにはどうすればよいですか、または (これが間違った質問である場合): StdLexical に位置情報を追加する最良の方法は何ですか?
javascript - 数について リテラル レキシカル
alert(010)、結果は 8 です。なぜですか? 私はecmascript 7.8.3数値リテラルを読みました。Numeric Literals Lexical によると、010 は無効な数値リテラルです。
c++ - c++関数のオーバーロードがあいまいです
C++で
これをコンパイルすると、エラーが発生します。
visual-studio 2008では、エラーはC2668です:'function':オーバーロードされた関数へのあいまいな呼び出し
私はこの問題が発生する理由を知っており、時間を使用する型キャストの解決策を知っています。しかし、この方法を使用すると関数のオーバーロードの字句性が失われるため、これは適切な解決策ではないと思います。
私のプロジェクトでは、自動型をint、float、std::basic_stringおよび関数ポインターに変更する字句オブジェクトを作成しています。すべての型キャスト演算子と作成者をオーバーロードします。しかし、「NULL」を入力すると、エラーC2668が発生します。
実際、ほとんど問題ありません。唯一の深刻な問題は、FALSEを使用する場合です。私のプロジェクトはコアライブラリであるため、すべてのエンドクライアントプログラマーをガイドすることはできません。
この問題をより賢く解決するための秘訣やヒントを誰が知っていますか?
java - 字句解析器の実装
言語 c-- の語彙アナライザーを実装する割り当てがあります。c_code を一連のトークンに変換する必要があります。これは、操作が容易になるため、内部で整数として表されます。言語の字句上の慣例として、double、else、if、int、return、void、while などのキーワードがあります。+ - * / < <= > >= == != = のような特殊記号も。、 。( ) [ ] { } /* */ //. 識別子は、任意の文字またはアンダースコアで始まり、その後に文字、数字、およびアンダースコアの任意の組み合わせが続きます。空白はトークンを区切り、無視されます。数値は整数または小数にすることができ、コメント行とブロックを使用できます。
これは私たちのテストコードです:
これが出力になるはずです
3 27 21 3 27 22 25 2 21 27 13 28 22 4 27 9 27 21 27 8 28 22 18 1 4 28 18 26 5 27 21 5 22 25 3 27 19 27 19 27 18 0 27 18 27 817 27 17 27 21 22 18 2 21 27 13 28 22 27 21 27 21 27 22 22 18 1 2 21 27 12 28 22 27 21 27 9 27 22 18 26
INT id leftparen INT id rightparen leftbrace IF leftparen id より大きい num rightparen RETURN id 乗算 id leftparen id マイナス num rightparen セミコロン ELSE RETURN num セミコロン rightbrace VOID id leftparen VOID rightparen leftbrace INT id コンマ id コンマ id セミコロン DOUBLE id セミコロン id assignop id leftparen rightparen セミコロンid assignop id leftparen rightparen セミコロン IF leftparen id greater num rightparen id leftparen id leftparen id rightparen rightparen セミコロン ELSE IF leftparen id notequal num rightparen id leftparen id 乗算 id rightparen セミコロン rightbrace
ユーザー John の提案に基づいてコードを書きました。これがどのように機能するかについてはまだ混乱しています。2番目のループを繰り返して空白またはシンボルを見つけると、シンボルのwsの前にどのタイプのトークンが来たかがわかります。スキップした文字を文字列に入れ、case ステートメントを使用してそれを判断しようとしましたが、ファイル全体が文字列に書き込まれるため、トークンが一致しないと思います。また、メソッドがコメントを見つけて安全に無視するにはどうすればよいでしょうか?