言語処理系

式(Expression)と文(Statement)

式と文の違いは知っておくといろいろ役立ちますので、ご紹介したいと思います。プログラミング言語の構文の要素は、式(Expression)と文(Statement)に分類されます。プログラマであれば、用語としては把握していなくても、プログラミングの実践の中で、式と文…

数式を解くプログラム その6(最後) - 構文解析3

id:yone-ken:20090223:p1 の続きです。さっそく、Expressionクラスから見ていきます。 class Expression : Node { public override void Evaluate(Context<Token> context) { Node left = new Term(); left.Evaluate(context); this.Value = left.Value; while (tru</token>…

数式を解くプログラム その5 - 構文解析2

id:yone-ken:20090220:p1 の続きです。再度、拡張BNFによる構文定義を確認します。 ::= ('+' )* | ('-' )* ::= ('*' )* | ('/' )* ::= '(' ')' | '+' | '-' | 構文解析を実装するに当たり、どんなクラスが必要でしょうか?また、そのクラスにはどんなメンバ…

数式を解くプログラム その4 - 構文解析1

id:yone-ken:20090219:p1 の続きです。例によって一般的な説明はwikipedia:構文解析を参照して頂くとして、「数式を解くプログラム」の場合の構文解析を具体的に説明します。そのために以前に定義した文法の抜粋を載せます。 ::= ('+' )* | ('-' )* ::= ('*'…

数式を解くプログラム その2 - 字句解析1

id:yone-ken:20090218:1234954345 の続きです。前回記載した数式の文法を踏まえた話をしますので、必要に応じて参照してください。「数式を解く」ためにはまず字句解析という処理が必要です。 wikipedia:字句解析 例によって細かい話は上記を参照して頂くと…

数式を解くプログラム その3 - 字句解析2

id:yone-ken:20090219:1235007962 の続きです。前回用意したTokenKind列挙型、Tokenクラスを使って、字句解析処理を実装します。字句解析を行うクラスはTokenizerクラスと命名します。そして、字句解析クラスのインターフェースを規定するクラスとしてContex…

数式を解くプログラム その1 - 概要

下記の掲示板での質問に触発されて、私も 数式を解くプログラムをC#3.0で作ってみました。■電卓 ((1+2)3)カッコの入れ子http://bbs.wankuma.com/index.cgi?mode=al2&namber=32500数式といっても対応するのは、四則演算(+, -, *, /)と丸括弧による演算の…