プログラミングと工作と

PythonとかPascalとかAVRマイコンとか、コンパイラつくったり電子工作なんかを楽しんでいるおっさんの記録

2015-07-01から1ヶ月間の記事一覧

構文解析部の変更その3 ー生成則 9.FACTORー

今日は、生成則 9.FACTOR を書いていきます。生成則を再掲します。 9. FACTOR → PART FACTORS なんか、簡単すぎる気がしますね。 それでは、スクリプトへ落としていきましょう! def factor(self): if self.token.token not in ['not', 'true', 'false', '('…

構文解析部の変更その2 ー生成則 10.FACTORSー

今日は、生成則 10.FACTORS を書いていきます。生成則を再掲します。 10.FACTORS → MULT_LEV_OP PART FACTORS → λ なんか、短くて簡単そうな気がします。ちなみに、MULT_LEV_OP というのも生成則 14.になります。これも再掲しておきます。 14.MULT_LEV_OP → …

構文解析部の変更その1 ー生成則 11.PARTー

今日から構文解析部の追加部分を作っていきます。最初は、生成則 11.PART から取り掛かります。生成則を再掲します。11.PART→ 'not' PART → '(' EXPRESS ')' → '+' ( '(' EXPRESS ')' | INTEGER | NON_KEY_ID ) → '-' ( '(' EXPRESS ')' | INTEGER | NON_KEY…

tokenクラスの変更

さて、Ver1の変更ですが、一番簡単そうなtokenクラスから始めます。tokenの変更は、昨日書いたように キーワード mod, div, not, and, or の追加 新トークン :=, *, <>, <=, >=, <, >, ), ( の追加 上記の追加を token.next()メソッドへ反映させる という点…

Ver.1の変更点について

「代入」を追加する新バージョンをVer.1とします。 Ver1での新入り達 Ver.1では、次の5つの新しいキーワードが入ります。 ・mod, div ・not, and, or最初の mod, div は整数算術演算子で、次の not, and, or がブール演算子です。 また、次の9つの新しいトー…

新章突入! -- 代入の実装 --

昨日、第0段階の骨組みが完成しました!若干のあやしいところはあるものの、まずは正常動作しています。こまかい修正はそのつど行うとして、先に進みましょう!第一段階で追加するのは、---> 「代入」 です。もっとも基礎的な実行可能ステートメントですよね…

記号表クラス修正-その2

昨日に引き続き、おかしなところを直していきましょう。定数 yes と no の型'type'が整数'int_s'になっている変数x,y,zが分離されていない今日は、変数x,y,zが分離されない問題を考えます。本来、変数 x と y と z は別の変数として登録されないといけないの…

記号表クラス修正-その1

昨日の動作試験で記号表におかしなところがありました。 定数 yes と no の型'type'が整数'int_s'になっている 変数x,y,zが分離されていない 最初の部分、yes と no の型が間違っている点を考えます。スクリプトを追っていくと、記号表に型名を入れるメソッ…

記号表つくってみた

さて、昨日つくった記号表クラスを使って、実際にコンパイラを動かしてみました。その結果が下になります。~/PythonProject/PasAvr$ python main.pyprogram test;const yes = true; no = false; small = 0; big = 123456; neg = -123;var id1 : integer; id2…

記号表クラス完成! (たぶん)

やっと、やっとネットがつながった!引っ越し終わって2週間、DTI(←僕の使っているプロバイダ)遅すぎ!!ネットで引越し手続きできないし、ADSL契約者をないがしろにするし、最悪です。一時期「ユーザーサポートNo.1!」とか言っていたけれど、まあこんな程…

引っ越しのため、しばらく更新休みます。

実は、今週の土曜日(7/11)引っ越しをします。 いま引越し準備でてんやわんや状態なのです。 さらに、手続きが遅くなったせいで、新居でのネット開通が7/16以降になってしまった・・・ そんなわけで、しばらく更新ができなくなってしまいます。 7/18位から…

記号表作成の為の、こまごましたメソッド - リターンズ

昨日は、会社の送別会で久しぶりに朝帰りをしてしまった。今日も一日ぐったりしていて24時間位時間を無駄にしたじゃないか!若いときはホイホイ行っていたけど、もう会社の飲み会はいいや・・・さて、前回足りないことに気がついたメソッドを作ります。「値…

記号表クラスを使う2

昨日に引き続き、今日は定数の記号表への登録に挑戦します!定数を処理する構文解析クラスのメソッド「const_stmts()」は次になります。def const_stmts(self): if self.token.token in self.token.keyword: # ①ここで、token.token には self.e.error(10) #…

記号表クラスを使う

昨日作った記号表クラスを使って、さっそく記号表を作りたいと思います。記号表は、構文解析中に作っていきます。なぜなら、変数を処理する解析中には、その変数の名前や型などをまさに処理しているわけですから。次に、変数を処理しているメソッド「var_stm…