options { // product_namespace = pascal; product_name = pas_product; // output file name prefix product_class = PasProduct; product_super_class = Writer; lexer_input = "paslex.g"; lexer_name = pas_lexer; lexer_class = PasLexer; lexer_super_class = TEnvInput; parser_name = pas_parser; parser_class = PasParser; common_name = pas_data; // output file name prefix common_header = pas_data; automatic_namespace = true; // NO antlr_mode = true; // notes = true; // duplicate comments and spaces // open_method = true; // open_parser / close_parser methods // only_start_notes = true; mark_type = TInputItemPtr; basic_type = TBasic; expr_type = TExpr; binary_expr_type = TBinaryExpr; binary_expr_left = left; binary_expr_right = right; binary_expr_selector = kind; unary_expr_type = TUnaryExpr; unary_expr_param = param; unary_expr_selector = kind; } extension lexer_include {@@ #include "envio.h" #include "input.h" #include "ioexception.h" @@} extension lexer_class {@@ public: virtual void translate (); @@} extension product_include {@@ #include "writer.h" using namespace NAMESPACE; @@} /* ---------------------------------------------------------------------- */ parser ; number : NUM_INT ; real_number : NUM_REAL ; identifier : IDENT ; string_literal : STRING_LITERAL ; module_decl : "module" id: identifier ';' ( class_decl)* "end" (';' )? ; class_decl : "class" name: identifier "end" (';' )? ;