16進計算機

ホームへ

例:12*(3+7)/(-c)-f
※入力に含まれる空白(U+0020)と改行(U+000A)は無視されます。

実装について

入力(<input>)は、次の導出規則を元に解釈されます:

<input> ::= ε | <expr> <expr> ::= <term> (('+' | '-') <term>)* <term> ::= <factor> (('*' | '/') <factor>)* <factor> ::= <number> | '(' <expr> ')' | '-' <factor> <number> ::= <digit>+ ('.' (<digit>+)?)? <digit> ::= '0' | ... | '9' | 'a' | ... | 'f' | 'A' | ... | 'F'

ただし、計算上は<factor>から<number>を導出する際に先頭の一文字を先読みしています。

参考:
構文解析 - アルゴリズム講習会