レクサー(lexer)は、ソースコードをトークンに分ける(字句解析(lexical analysis)を行う) パーサー(parser)は、ソースコードやトークンからAST(abstract syntax tree; 抽象構文木)を生成する(構文解析(syntactic analysis)を行う)
yacc, bison, ANTLRといった、パーサーを生成するツールも存在する そういったツールの多くは、EBNF(|ebnf|)を元に、パーサー用のプログラム(例えばC言語プログラム)を生成する
REPL(read eval print loop)は、対話モードのことである(入力を読み、評価し、結果を出力し、再度入力を読み、と繰り返す)
パース手法には、大きく分けて次の二つがある
- トップダウンパース(top-down parsing): ASTのルートノードを初めに作り、下に降りていく
- ボトムアップパース(bottom-up parsing): その逆
二項演算子(binary operator)は、"infix operator"とも呼ばれる("infix"は「接中辞」と訳される。"prefix"や"postfix"と同様、言語学の用語である)
入力 ↓ レクサー(lexer.rs)でトークン(token.rs)に分ける ↓ そのトークンをパーサー(parser.rs)でパースしてAST(ast.rs)を構築する ↓ ASTを評価(evaluator.rs)する。その際、オブジェクトはobject.rs、演算子はoperator.rs、スコープはenvironment.rsとなる
var //acronym for let
= //assignment
+= -= *= /= %= ^=
loop continue break