Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 1.51 KB

memo.txt

File metadata and controls

44 lines (31 loc) · 1.51 KB

レクサー(lexer)は、ソースコードをトークンに分ける(字句解析(lexical analysis)を行う) パーサー(parser)は、ソースコードやトークンからAST(abstract syntax tree; 抽象構文木)を生成する(構文解析(syntactic analysis)を行う)

yacc, bison, ANTLRといった、パーサーを生成するツールも存在する そういったツールの多くは、EBNF(|ebnf|)を元に、パーサー用のプログラム(例えばC言語プログラム)を生成する

REPL(read eval print loop)は、対話モードのことである(入力を読み、評価し、結果を出力し、再度入力を読み、と繰り返す)

パース手法には、大きく分けて次の二つがある

  1. トップダウンパース(top-down parsing): ASTのルートノードを初めに作り、下に降りていく
  2. ボトムアップパース(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となる

TODO

assignment

var //acronym for let

= //assignment

+= -= *= /= %= ^=

loop

loop continue break