Go言語は初心者なのでまずいところあると思う。 今回作ったもの 簡単な四則演算パーサー。 こんな感じのBNFを解析しながら実行する。 top ::= "?"? line | "" line ::= (ident "=")? line | expr expr ::= term (("+" | "-") term)* term ::= fact (("*" | "/") fact)* fact ::= "(" expr ")" | ("+" | "-") fact | number | ident number :::= [0-9]+ ident :::= [a-zA-Z]+ 説明不要だと思うけど、+と-と*と/は四則演算で、=は代入演算子。 先頭に?が付いている場合は結果を表示する。 というどこかで見たことのあるような四則演算機。 実装 ほぼBNFの名前通りにメソッド名が付けられているから分
![Go言語で簡単なパーサー書いてみた - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/faae4d498283f43cb15460bd46c2501b97909336/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9R28lRTglQTglODAlRTglQUElOUUlRTMlODElQTclRTclQjAlQTElRTUlOEQlOTglRTMlODElQUElRTMlODMlOTElRTMlODMlQkMlRTMlODIlQjUlRTMlODMlQkMlRTYlOUIlQjglRTMlODElODQlRTMlODElQTYlRTMlODElQkYlRTMlODElOUYmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTA3MGQyYmVmZDFiMWZkNTFiM2UzMDJkOGE0MDY5NDQy%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwYWx1Y2t5MDcwNyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MDVkZDA0MDk0NGM4N2FmMTNjODY5NDZhYmQ2MmEwNTY%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Ddbbc7e68609f69088615b503091b8e41)