タグ

構文木に関するlike_futsalのブックマーク (5)

  • 構文解析 - アルゴリズム講習会

    構文解析 再帰下降構文解析 構文解析にはいろいろな手法がありますが、プログラミングコンテストでは実装が単純かつそこそこ強力な(LL(1)文法を処理できる)再帰下降構文解析がよく使われます。 これは、関数の再帰を使って構文を小さな領域に分割していき、末端から値を確定させていく手法です。 四則演算の構文解析 例として、四則演算の構文解析を考えます。 ここでは四則演算は数字と括弧、+-*/の4つの演算子から成り立っているとします。演算子の優先順位も実際の四則演算の通り、掛け算と割り算が優先されます。ただし、全ての演算は整数だとします。以下は式の一例です。 まずは、四則演算の構文をBNF記法で表します。 BNF記法をあまり厳格に記述する必要はありませんが、演算子の優先順位はきっちり判別できるようにしておく必要があります。 最初に、式全体をexprという変数(非終端記号)で表すとします。 exprの

  • 抽象構文木

    トップ > C-Tips > 抽象構文木 抽象構文木 1.抽象構文木とは 元のプログラムの構造をそのまま木構造で表したものを構文木(syntax tree, parse tree)という。 全てのトークン(字句)が構文木に含まれる。 これらのトークンには、"(" や ")" など後の処理(意味解析など)に不要なものも含まれる。 これら不要なトークンを除いたものを、抽象構文木(abstarct syntax tree)という。 構文木と抽象構文木の違いの例を下図に示す。 C言語で表現する場合、構文木のノードと葉は一般に構造体となるが、 どのように定義するかは、特に定まっていない。後の処理に都合のよいように定義する。 Tiny Cの場合、 リスト構造を採り、次のように表現している。 2項演算子 a + b => (+ a b) a - b => (- a b) 関数呼び出し foo(i, 3)

  • プログラミング言語処理

    プログラミング言語処理 講義資料 一覧 全講義資料 pdf版(version 1.1, 108ページ)は、 こちら 言語処理系とは インタプリタとコンパイラ 言語処理系の基構成 例題:式の評価 BNFと構文木 解釈実行:インタプリター コンパイラとは ソースコード 字句解析の基礎:正規表現によるパターンマッチ 字句解析と正規表現 自動字句解析生成プログラム:lex 数式の構文解析:top-down parserの作り方 構文規則 top-down parser の作り方 構文解析の基礎 top-down parserとbottom-up parser 上向き構文解析と還元 演算子順位構文解析法 LR構文解析法 構文解析生成プログラムyacc tiny Cについて tiny Cの言語仕様 tiny Cの文法 ソースコード tiny C 処理系のデータ構造 構文木(AST)のデータ構造 AS

  • 言語処理系入門�6

    HTML 版: http://alprosys.com/es6/es6_features.html ECMAScript 6 の新機能の紹介

    言語処理系入門�6
  • 言語処理系とは

    さて、ここ数日、ハードウェアの動作を勉強しようと思って、このページを参考にしててちょこちょこプログラムをSchemeで書く為に格闘してました。 いやぁ、なかなかC言語を読むのが難しくて手こずってたんですが、ある程度カタチになったんで、メモ代わりに。 しっかし、Cのプログラム見てると、大域変数使いまくりで、破壊的変更ありーの、ポインタなんて出てきた日にゃあ何やってんだか一発で分からんし、ホント困ったもんですよ。 例によって、関数プログラミング的に解題していきたいと思います。 インタプリタとコンパイラ 言語処理系とは、プログラミング言語で記述されたプログラムを計算機上で実 行するためのソフトウエアである。そのための構成として、大別して2つの構 成方法がある。 インタープリター(interpreter,翻訳系): 言語の意味を解析しながら、その意味する動作を実行する。 コンパイラ(compile

  • 1