#include "parser.hpp" #include #include int main() { std::istringstream inp( "const world = 5, hello = 7;\n" "var x: Int, y: ^Int;\n" "begin\n" "end.\n" ); std::unique_ptr program; int result{ 1 }; elna::syntax::FooLexer lexer(inp); yy::parser parser(lexer, program); try { result = parser(); } catch (yy::parser::syntax_error& syntax_error) { std::cerr << syntax_error.location << ": " << syntax_error.what() << std::endl; return result; } for (auto& definition : program->definitions()) { auto const_definition = dynamic_cast(definition.get()); std::cout << "const " << const_definition->identifier() << " = " << const_definition->body().number() << std::endl; } for (auto& declaration : program->declarations()) { std::cout << "var " << declaration->identifier() << ": "; if (declaration->type().is_pointer()) { std::cout << '^'; } std::cout << declaration->type().base() << std::endl; } return result; }