Primitive 言語について
csnagoya でやってる
コンパイラ入門に出てくる言語についてまとめとこうと思う.
lambda が無いな.
statement の ident(literal) って何かと思ったら,
たぶん,組込み関数があるんだね.
ユーザー関数書けないから,最初わからなかったよ.
プログラム全体 <program> --> "MODULE" <ident> ";" [ <declist> ] "BEGIN" <statlist> "END" <ident> "." 識別子 <ident> --> <letter> ( <letter> | <digit> )* 変数宣言 <declist> --> "VAR" ( <identlist> ":" <type> ";" )+ <identlist> --> <ident> ( "," <ident> )* 型 <type> --> "INTEGER" | "STRING" 文 <statlist> --> <statement> ( ";" <statement> )* <statement> --> <ident> ":=" <expression> | "IF" <relation> "THEN" <stalist> [ "ELSE" <statlist> ] "END" | "WHILE" <relation> "DO" <statlist> "END" | <ident> "(" <literal> ")" 式 <relation> --> <expression> <rel op> <expression> <expression> --> [ <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* <term> --> <factor> ( <mul op> <factor> )* <factor> --> <literal> | "(" <expression> ")" <integer> --> <digit>+ 演算子 <rel op> --> "<>" | "<" | "<=" | "=" | ">" | ">=" <unary op> --> "+" | "-" <add op> --> "+" | "-" <mul op> --> "*" | "/" リテラル <literal> --> <ident> | <integer> | <string> <digit> --> "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" <string> --> " <any character exprect EOF, EOL and "> " <letter> --> "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"