タグ付けされた質問 「formal-grammars」

形式文法、形式言語の生成的記述に関する質問。

2
LL(k)とLR(k)の文法を区別する方法はありますか?
私は最近、コンパイラの設計について勉強しています。LL文法とLR文法の2種類の文法について知りました。 また、すべてのLL文法がLRであり、LL文法がLR文法の適切なサブセットであるという事実も知っています。1つ目はトップダウン解析で使用され、2つ目はボトムアップ解析で使用されます。 しかし、特定の文法がLLまたはLRであると言えるようにする方法はありますか?

3
この文法LL(1)はどうですか?
これはドラゴンブックからの質問です。これは文法です: S→AaAb∣BbBaS→AaAb∣BbBaS \to AaAb \mid BbBa A→εA→εA \to \varepsilon B→εB→εB \to \varepsilon 質問では、それがLL(1)であってSLR(1)ではないことをどのように示すかを尋ねます。 それがLL(1)であることを証明するために、構文解析テーブルを作成してみましたが、セル内で複数のプロダクションを取得していますが、これは矛盾しています。 このLL(1)の状態と、それを証明する方法を教えてください。

2
文脈自由文法によって生成された言語を見つける
これはドラゴンブックからの質問です(私は翻訳ミスをお詫びします。英語版は手元にありません): この文法によって生成される言語は何ですか? S→ a Sb S∣ b SS∣ ϵS→aSbS∣bSaS∣ϵS \rightarrow a S b S \mid b S a S \mid \epsilon ここで何をするべきかわかりません。言語に関する本の定義はこれを述べています(そしてそれはほとんど章の中でそれです): 言語は、任意の解析ツリーで生成できるすべての単語のセットです。 したがって、この文法から「任意」の解析ツリーを作成する場合は、最初の2つのルールだけを使用して、再帰的に構築を続けることができます。少し検索したところ、すべてのルールを1回使用する必要があるという印象を受けましたが、よくわかりません。誰かがこの種の問題を解決するためのいくつかのヒントを提供することができればそれは非常に役に立ちます。

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
この言語が文脈自由でないことをどのように証明できますか?
次の言語があります { 0私1j2k| 0 ≤ I ≤ J ≤ K }{0i1j2k∣0≤i≤j≤k}\qquad \{0^i 1^j 2^k \mid 0 \leq i \leq j \leq k\} 私はどのチョムスキー言語クラスに適合するかを決定しようとしています。文脈依存の文法を使用してそれがどのように作成されるかを確認できるので、少なくとも文脈依存であることがわかります。文脈自由文法では作成できないようですが、それを証明するのに問題があります。 がすべての単語の3番目の部分(2つのsのすべてを含むセクション)に配置されている場合、フォークポンピングレンマを通過するようです。vとxを必要なだけポンプでき、言語のままです。私が間違っている場合、なぜ私が正しい場合でも、この言語は文脈自由ではないと思うので、なぜそれを証明できますか?u v w x yuvwxyuvwxy222vvvバツxx

3
文法
缶誰かが私に制作しようとバックトラックと理由を再帰下降構文解析啓発とS → A(この順番では)文法によって形成された言語認識していないS → A S Aを| A。S→aSaS→aSaS \rightarrow aSaS→aaS→aaS \rightarrow aaS→aSa | aaS→aSa | aaS \rightarrow aSa\ |\ aa 言語からの単語を解析するだけのようです。{a2n | n≥1}{a2n | n≥1}\{a^{2^n}\ |\ n \ge 1 \} たとえば、このABNFパーサージェネレーターをプロダクションルールとともに使用して、そのようなパーサーを生成しましたがS = "a" S "a" / "aa"、パーサーはを認識しませんaaaaaa。 パースツリーの左端からのノードの連結が7で始まるまでは、プロダクションを使用し、その後、ツリーが見えるまでプロダクションS → a aを選択して、パースツリーを上に移動することを期待します。このような:S→aSaS→aSaS \rightarrow aSaaS→aaS→aaS \rightarrow aa S / | \ a …

3
決定可能な言語と無制限の文法?
チューリングマシンと無制限の文法は、RE言語を定義する2つの異なる形式です。一部のRE言語は決定可能ですが、すべてが決定可能というわけではありません。 チューリングマシンで決定可能な言語を定義するには、その言語のすべての文字列を停止して受け入れ、その言語にないすべての文字列を停止して拒否する言語のTMがあれば、言語は決定可能であると言います。私の質問はこれです:チューリングマシンではなく無制限の文法に基づく決定可能な言語の類似の定義はありますか?

1
シフト解決解析-質問
私は最近、タイトルで言及されている解析手法を説明する論文に出くわしました。残念ながら、上記の論文で使用されている用語は、私の理解をいくらか超えているため、構築アルゴリズムをより直感的に把握するように努めています。私は成功したと思います(このプレゼンテーションはah-haモーメントのソースでした)が、このテクニックに慣れている人またはそこに含まれる用語のどちらかからの正しさの検証は非常にありがたいです。 ソリューションに対する私の見方を説明し(それが正しい場合は、この手法を理解しようとしている他の人々の助けになると思います)、後で追加の質問をします。:何の誤解がありません確実にするために、私は次の標準表記法を使用するつもりだ、B 、Cを、。。。∈ T、A 、B 、C 、。。。∈ N、、と、紙のようにはルール番号を示しますA 、B 、C 、。。。∈ Ta,b,c,...∈Ta, b, c, ... \in TA 、B 、C、。。。∈ NA,B,C,...∈NA, B, C, ... \in Nα 、β 、γ 、。。。∈ { N ∪ T } * A I → ω I。。。バツ、Y、Z∈ N∪ T...X,Y,Z∈N∪T... X, Y, Z \in N \cup Tα 、β、γ、。。。∈ { …

1
文字列とCFGが与えられた場合、文字列の後に続くことができる文字(CFGの定型形式)は?
してみましょう、端末とのセットでNいくつかの文脈自由文法の非終端記号の集合G。ΣΣ\SigmaNNNGGG 私は文字列持っていると言うように、X 、A Y ∈ S(G )xは、yは∈ (Σ ∪ N )*およびS(Gは)のsentential形態であるG。a∈(Σ∪N)+a∈(Σ∪N)+a \in (\Sigma \cup N)^+xay∈S(G)xay∈S(G)x a y \in \mathcal{S}(G)x,y∈(Σ∪N)∗x,y∈(Σ∪N)∗x,y\in (\Sigma \cup N)^*S(G)S(G)\mathcal{S}(G)GGG 与えられた、Iセットを決定したいC = { B | W BをZ ∈ S(G )、B ∈ Σ ∪ N }を。GGGC= { b ∣ w a b z∈ S(G )、B ∈ Σ ∪ N}C={b∣wabz∈S(G),b∈Σ∪N}C …

5
有限の有限の文字列セットを指定して文法を構築する既知の方法はありますか?
私の読書から、ほとんどの文法は無数の文字列を生成することに関係しているようです。逆に作業するとどうなりますか? 長さがmのn個の文字列が指定されている場合、それらの文字列を生成する文法を作成し、それらの文字列だけを作成することが可能です。 これを行うための既知の方法はありますか?理想的には、私が研究できる技術名です。あるいは、そのような方法を見つけるために文献検索をどのように行えばよいでしょうか?

2
「最短一致」以外の「ぶら下がりelse」問題の別の解決策はありますか?
以下の文脈自由文法のプレゼント「ぶら下がりelse」タイプのあいまいさ(と想像を意味し、の略と命令またはブロックのいくつかの他の種類の略): たとえば、はまたはとして解析できます(これは、この文法の最も単純/最短のあいまいな単語です)。b c Saaaif expr thenbbbelseccc aacbc(a(acbc))(a(ac)bc)S→aSbS|aS|cS→aSbS|aS|c \begin{aligned} S &\rightarrow aSbS \;|\; aS \;|\; c\\ \end{aligned} aacbcaacbcaacbc(a(acbc))(a(acbc))(a(acbc))(a(ac)bc)(a(ac)bc)(a(ac)bc) この「ぶら下がりelse」曖昧軍「他」(解決するために、「標準」方法「IF-THEN」(最も近い/最も内側とペアに)ステートメントを)。これは次のようにして実現できます。 この文法は明確です。上記の例では、解析をます。a Sbbbaaa(a(acbc))ST→aTbS|aS|c→aTbT|cS→aTbS|aS|cT→aTbT|c \begin{aligned} S &\rightarrow aTbS \;|\; aS \;|\; c\\ T &\rightarrow aTbT \;|\; c\\ \end{aligned} (a(acbc))(a(acbc))(a(acbc)) 質問:aacbcの解析を強制するあいまいさを解決する別の自然な方法はありますか?言い換えると、私は上記の2つと同じ言語を生成する、明確で、aacbcを(a(ac)bc)として解析する文法を探しています。a a c b c a a c b c (a (a c )b c …

1
無限のルールを許可するCFGはどれほど強力ですか?
最近、文脈自由文法に無数のルールを許可するとどうなるのだろうと思っていました。明らかに、我々はルールの任意のそのような無限のセットを許可したい場合は、すべての言語一部アルファベット上Σは CFGによって記述することができたG = ({ S } 、Σ 、R 、S )とR = { S → W | W ∈ L }。しかし、Rを文脈自由文法によって作成できるようなルールのセットに制限するとどうなるでしょうか。LLLΣΣ\SigmaG=({S},Σ,R,S)G=({S},Σ,R,S)G = (\{S\},\Sigma,R,S)R={S→w∣w∈L}R={S→w∣w∈L}R = \{S \rightarrow w \mid w \in L \}RRR その目的のために、非終端記号の集合所与と端子Σ、私たちはの要素としてルールをしない表示できN × (N ∪ Σ )*が、アルファベットの上に文字列としてR (N 、Σ ) = N ∪ Σ ∪ { → }。ここで私の質問は、無限ルールCFGをタプルG = (N …

3
自分自身と連結された単語の言語の文脈依存文法
私は以下の言語について説明文脈依存文法を探しています: 。L = { W 、W | W ∈ { 、B }∗、| w | ≥ 1 }L={ww∣w∈{a,b}∗,|w|≥1}L = \{ ww \mid w ∈ \{a,b\}^{\ast}, |w| ≥ 1\} などのルールが許可されていないため、単語の「中間」を示す非終端記号を配置できないという問題があります。問題へのトリックはありますか?バツ→ εX→εX \to \varepsilon

1
CFGをPDAに変換
文脈自由文法をプッシュダウンオートマトンに変換するルールまたはメソッドのセットはありますか? すでにオンラインでいくつかのスライドを見つけましたが、それらを理解することができませんでした。 スライド10で彼はいくつかのルールについて話しましたが、誰でもそれを説明できますか?

1
算術式の文法変換
Theodore Norvell(1999)による再帰的降下による式の解析の記事で、著者は算術式の次の文法から始めます。 E --> E "+" E | E "-" E | "-" E | E "*" E | E "/" E | E "^" E | "(" E ")" | v これはあいまいで左再帰的であるため、かなり悪いです。したがって、彼は左の再帰をそこから削除することから始め、その結果は次のようになります。 E --> P {B P} P --> v | "(" E ")" | U P B --> …

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