dポイントプレゼントキャンペーン実施中!

オブジェクト指向の、スクリプト型言語を制作しようと考えています。
字句解析はflex、構文解析はbisonを使用します。

flexを使用するとき、includeするヘッダーファイルは、y.tab.hでいいでしょうか?

言語制作に関しては初心者であるため、なにか欠けている点などがありましたら、おっしゃってください。

A 回答 (2件)

No1回答者のように こういう質問に答えていいのか迷いますが、まぁ行ってみるか...



はい、通常、flex(またはlex)とbison(またはyacc)を使用してスクリプト型言語を作成する場合、標準的な手順として y.tab.h をヘッダーファイルとして使用することがあります。ここでは、簡単な説明をします。

1.Bison (yacc) ファイル (example.yなど)
| %{
| #include "ast.h" // ここで必要なヘッダーファイルを include する
| %}

| %union {
| // ユニオンの定義
| // ...
| }

| // ルールの定義
| // ...

2.Flex ファイル (example.lなど)
| %{
| #include "y.tab.h" // ここで y.tab.h を include する
| #include "ast.h" // 他の必要なヘッダーファイルも include する
| %}

| // ルールの定義
| // ...

3.ast.h ファイル
| #ifndef AST_H
| #define AST_H

| // ここで抽象構文木(AST)に関する定義を記述する

| #endif

y.tab.h は、Bisonによって生成されるヘッダーファイルで、構文解析器が生成するトークンやパースツリーのデータ構造に関する情報が含まれています。そのため、Flexファイル内で y.tab.h を include することで、FlexとBisonの連携がスムーズに行えます。

ということですが、わかりますか?(わけのわからん ど素人 に教えると一字一句わからなくて 全部、教える羽目になるので こういう質問ってイヤなんですよ。 No1(No2)さんのご心配の通りです。)
    • good
    • 0

まず、スクリプト言語と言われているのがインタプリタ型の言語とするのかコンパイル型の言語とするのかを決めること。


次に、その言語で書かれたプログラムが動作するOSを決め、機械語の仕様を学ぶこと。
三つ目に、インタプリタ型の場合の実行手順、コンパイル型の場合の実行モジュールの構造等を学ぶこと。
四つ目に、言語仕様を具体化し決定すること。
五つ目に、採用を決めているツールで決定した言語仕様の字句解析、構文解析が可能かを検証すること。

とりあえずそんな感じですか。
スキルとしては「基本情報処理技術者試験で使用されるアセンブリ言語CALS IIで書かれたプログラムをこれの機械語に翻訳するプログラムを作れ」といった問題に「あー、はい、はい」と躊躇なく望めるようでないと、アセンブリ言語より自然言語に近い高級言語のコンパイラ作成に取り掛かるのは難しいでしょう。

参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A