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


10
重大ではないタイプミスを解決するためだけにコミットする価値はありますか?
コードで重要でないタイプミス(たとえば、print(error)ステートメントの誤ったアポストロフィ)に遭遇した場合、そのエラーを解決するためにコミットする価値がありますか、それともそのままにしておくべきですか? 具体的には、これらの重要ではないタイプミスを解決する価値に対して、コミットログのガムアップを比較検討することに興味があります。私はそれらを解決することに傾いています。私はつまらないですか?

5
「文脈自由文法」という用語で「文脈自由」とはどういう意味ですか?
文脈自由文法(CFG)が何であるかを説明しようとする資料の量を考えると、そのような文法が「コンテキスト-自由"。そして、私の考えでは、誰もそうすることに成功していません。 私の質問は、なぜ文脈自由文法が文脈自由と呼ばれるのですか?「コンテキスト」とは何ですか?コンテキストは、現在分析されている構造を取り巻く他の言語構造である可能性があるという直感がありましたが、そうではないようです。誰でも正確な説明を提供できますか?

7
(Javaとは異なり)静的データメンバーをC ++でクラスの外部で個別に定義する必要があるのはなぜですか?
class A { static int foo () {} // ok static int x; // <--- needed to be defined separately in .cpp file }; A::x.cppファイル(またはテンプレート用の同じファイル)で個別に定義する必要はありません。A::x同時に宣言と定義ができないのはなぜですか? 歴史的な理由で禁止されていますか? 私の主な質問は、staticデータメンバが同時に宣言/定義された場合(Javaと同じ)、機能に影響しますか?

12
ほとんどのプログラミング言語には、関数を宣言するための特別なキーワードまたは構文があるのはなぜですか?[閉まっている]
ほとんどのプログラミング言語(動的および静的に型付けされた言語の両方)には、関数を宣言するための変数の宣言とは大きく異なる特別なキーワードおよび/または構文があります。関数は別の名前付きエンティティを宣言するのと同じように見えます: たとえば、Pythonの場合: x = 2 y = addOne(x) def addOne(number): return number + 1 何故なの: x = 2 y = addOne(x) addOne = (number) => return number + 1 同様に、Javaのような言語では: int x = 2; int y = addOne(x); int addOne(int x) { return x + 1; } 何故なの: int x …

9
コードコメントのピリオド/フルストップについてはどう思いますか?[閉まっている]
私が見た、これはSO居酒屋に尋ねたので、私はここに質問を投稿しています。面白い質問だと思いました。(もちろん、SOに属していませんが、ここでは問題ないと思います。) コードコメントにピリオドを追加しますか(またはOPが書いたように「フルストップ」)。 関連性を保つために、なぜですか?

4
文から単語を抽出し、それぞれの品詞を特定するにはどうすればよいですか?[閉まっている]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 6年前に閉鎖されました。 私は文を取り、それに含まれる各単語を識別し、各単語が品詞のどの部分であるかを定義する何かを書きたいです。 例えば Hello World、私は文です これを返します verb noun, pronoun verb adjective noun 理想的には、最終的にそれをさらに一歩進めて文を取り、プログラムでそれが解釈しようとしていることを理解し、おそらくそれについて何かをしたいと思います。 だから私の質問は、誰かがこのようなことを聞​​いたことがありますか?

6
「JSON Object」と言っているのは冗長ですか?
JSONがJavaScript Object Notationの略である場合、JSONオブジェクトと言うとき、あなたは本当に「JavaScript Object Notationオブジェクト」と言っているのではないでしょうか? 「JSON string」と言う方が正しいでしょうか? それとも、単にJSONと言う方が正しいでしょうか?(「これらの2つのサービスは、それらの間でJSONを渡します」のように。)

3
オブジェクト指向プログラミング:なぜ「指向」なのか?
私はゲームプログラミングの学位を取得しました。これはコンピューターサイエンスの学位ではないので、理論の多くは実用的なポートフォリオの構築と、ゲーム業界で明らかに重要なJIT学習と思われるものを優先します。最初の主題は「オブジェクト指向プログラミングの紹介」でした。 さまざまなプログラミングパラダイムについて学ぶまで、そのフレーズは気にしませんでした(https://en.wikipedia.org/wiki/Comparison_of_programming_paradigmsからこのリストを取得しています)。 命令的 機能的 手続き型 構造化 イベント駆動 オブジェクト指向 宣言的 オートマトンベース これは完全なリストではなく、これらの概念のすべてが同等ではなく、それらのほとんどが排他的でもないことがわかりますが、なぜそれらのほとんどが1つの単語だけを必要とするのか理解できません。機能的; 宣言的-しかし、オブジェクトを使ったプログラミングについて話すときは、それらのオブジェクトを中心に指向していることを明確にする必要があります。オブジェクトだけを使用することはできませんか?ただオブジェクトを持てないのですか?なぜ彼らは私たちをガイド星として方向づけなければならないのですか? ここ(https://en.wikipedia.org/wiki/Object-oriented_programming)を見ると、独自の用語として「指向」という用語が使用されています。「オブジェクト」のみが説明されています。 また、イベントドリブンが使用されている実用的な理由を見ることができます。なぜなら、イベントプログラミングは既に会議を行っているときに行うことであり、オートマタプログラミングは、ロボット生産ラインをセットアップしているように聞こえるからです。そのため、そこに追加の明確な単語があると役立ちます。 オブジェクトプログラミングをフレーズとして、プログラミングでオブジェクトを使用するときの動作を説明するのに十分ではないのはなぜですか? 私の口調から、明らかに「指向」という言葉はあまり好きではありません。弁護士が一種の口頭ダニとして「に関連して」というフレーズを使用した後、弁護士に耳を傾け、法廷記者としての時間を思い出させます。それは何の意味もありませんでした。彼らが次に何を言いたいかを考えている間に、彼らがかつて空気を満たしていた用語でした。しかし、私は言語の変更を提唱しようとはしていません。なぜそうなっているのかを尋ねているだけです。純粋に歴史的、痕跡的な理由でそのように知られるようになった理由を誰かが知っていれば、それが答えです。言語の変更を提唱することに時間を浪費することにした場合、それは弾薬になります。 一方、ツールやツールベルトに単にそれらを持たせるのではなく、他のすべての方向を除外して、言語やコードがオブジェクトを指す必要がある理由が実際にある場合、私は本当にそれについて学ぶことに興味があります。役に立つことを学ぶのが好きです。

3
構文と文法の違いは何ですか?
構文とセマンティクスの違いを理解しています- 構文:シンボルを組み合わせて有効な式またはステートメントを形成する方法。 セマンティクス:式またはステートメントを形成する記号の意味。 しかし、文法は何ですか?たとえば、ある構文は「文法的には間違っているが、構文的には正しい」と人々が言うのを時々聞きます。どういう意味ですか?

1
文法に基づいてレクサーを作成するときに従う手順は何ですか?
文法、レクサー、パーサーに関する質問Clarificationに対する回答を読んでいると、答えは次のように述べています。 [...] BNF文法には、字句解析と構文解析に必要なすべてのルールが含まれています。 パーサーは文法に基づいているのに対し、これまでは常に字句解析は文法に基づいていないと考えていたため、これはやや奇妙に思えました。レクサーの作成に関する多数のブログ投稿を読んだ後、この結論に至りました。デザインの基礎として1つのEBNF / BNF を使用したことはありません。 パーサーと同様にレクサーがEBNF / BNF文法に基づいている場合、そのメソッドを使用してレクサーを作成するにはどうすればよいでしょうか?つまり、特定のEBNF / BNF文法を使用してレクサーを構築するにはどうすればよいですか? EBNF / BNFをガイドまたは設計図として使用してパーサーを記述することを扱った多くの投稿を見てきましたが、レクサーデザインと同等のことを示すものは今のところ見つかりませんでした。 たとえば、次の文法を取ります。 input = digit| string ; digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; string = '"', { all characters - …

3
パーサーの文法を指定するにはどうすればよいですか?
私は長年プログラミングを行ってきましたが、依然として非常に時間がかかるタスクの1つは、パーサーの文法を指定することです。この過度の努力の後でも、私が思いついた文法が良いかどうかはわかりません( 「適切」の合理的な尺度によって)。 文法を指定するプロセスを自動化するアルゴリズムがあるとは思っていませんが、現在のアプローチの当て推量と試行錯誤の多くを排除する問題を構築する方法があることを願っています。 私の最初の考えはパーサーについて読むことであり、私はこれのいくつかを行いましたが、私はこの主題について読んだすべてが文法を与えられたものとして(または検査によってそれを指定できるほど些細な)、そして焦点を当てますこの文法をパーサーに変換する問題。私は直前の問題に興味があります:そもそも文法を指定する方法。 私は主に、具体的な例(ポジティブとネガティブ)のコレクションを正式に表す文法を指定する問題に興味があります。これは、新しい構文を設計する問題とは異なります。この区別を指摘してくれたマクニールに感謝します。 文法と構文の違いを本当に理解したことは一度もありませんでしたが、理解し始めた今、私は主に文法を指定する問題に興味があると言って最初の明確化を明確にすることができました事前に定義された構文:私の場合、この構文の基礎は通常、ポジティブな例とネガティブな例の集まりです。 パーサーの文法はどのように指定されていますか?ベストプラクティス、設計方法論、およびパーサーの文法の指定に関するその他の有用な情報を説明するための事実上の標準である本または参考資料はありますか?パーサーの文法について読むとき、どの点に焦点を合わせるべきですか?

2
Haskellのメモリ効率-より良いアプローチはどれですか?
修正された2次元文法構文に基づいて、マトリックス圧縮ライブラリを実装しています。データ型に対して2つのアプローチがあります-メモリ使用量の場合、どちらが良いでしょうか?(何かを圧縮したい;))。 文法には、プロダクションが4つだけの非ターミナル、または右側にターミナルが含まれています。同等性チェックと文法最小化のためにプロダクションの名前が必要になります。 最初: -- | Type synonym for non-terminal symbols type NonTerminal = String -- | Data type for the right hand side of a production data RightHandSide = DownStep NonTerminal NonTerminal NonTerminal NonTerminal | Terminal Int -- | Data type for a set of productions type ProductionMap = Map …

2
Forthの柔軟性が文法を不適切にするのはなぜですか?
私は最近、スタックベースのプログラミング言語を書く仕事を引き受けました。しかし、自分の言語の設計を始める前に、既存のスタックベースの言語を読んで実験するのは良い考えだと思いました。 これにより、この投稿のトピックに移動します。私は、Postfixスタイルの式を使用するスタックベースの言語であるForthに関するWikipediaの記事を読んでいました。記事では、私は次の声明を見ました: Forthの柔軟性により、静的なBNF文法が不適切になり、モノリシックコンパイラーがありません。コンパイラを拡張するには、文法を変更して基礎となる実装を変更するのではなく、新しい単語を書くだけで済みます。 私の理解では、フォースの専門用語では、「単語」という用語は基本的に「サブルーチン」と同義のようです。これを考えると、上記のステートメントは奇妙に思えます。Forthで新しい関数を作成する機能がForthの正式な文法を不適切にするのはなぜですか?定義する新しいサブルーチンごとに文法を書き直す必要があるのはなぜですか?環境で新しい単語を書くことは、コンパイラの拡張をどのように構成しますか?上記のステートメントは、新しい関数を定義できるため、正式な文法はPythonには不適切であると言っているように見えます。 実際、私は以下のForthの単純なサブセットに対してBNFスタイルの文法を書くことを試みることにしました。 program ::= stmt+ stmt ::= func | expr func ::= ':' expr+ ';' expr ::= INTEGER | word word ::= ('+' | '-' | '*' | '/' ) 上記の文法は、Forthステートメントの有効なサブセットをカバーしているように思われ、Forth言語のすべての有効なステートメントをカバーするように拡張することはそれほど難しくないと思われます。さらに、コンパイラーのパーサーが上記の文法を実装している場合、コンパイラーがどのように拡張されるかはわかりません。コンパイラは、環境に新しい単語を追加するだけです。環境のみが変更されます。まるで、上記のWikipediaからの抜粋は、コンパイラー(変更されない)を構成する下線コードとコンパイラーの環境(変更される)を融合しているようです。 要約すると、なぜ新しい単語(サブルーチン)を定義するForthの能力が、書かれた文法には不適切なのでしょうか。

3
識別子で「ies」の代わりに「ys」を使用して、検索および置換機能を容易にすることは理にかなっていますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 文法的には正しくありませんが、関数や変数などの識別子を書くときに、Yで終わる複数の単語に単に「s」を追加することは意味がありますか?この理由は、たとえば「company」を「vendor」に置き換えるなど、検索と置換が必要な場合、「company」は単数形と複数形(「company」と「company s」)の両方に一致するのに対し、複数形のスペルが正しい場合、2つの別々の検索を行う必要があります。
9 grammar 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.