#ifndef _%{guard_name}_H #define _%{guard_name}_H % if define_stype? typedef union { %{union_body} } %{stype}; % end enum %{prefix}tokentype { % starting = 257 %{token_prefix}EOF = 0, % grammar.terminals.each_with_index do |terminal, i| %{token_prefix}%{terminal.name} = %{starting + i}, % end }; typedef struct { struct %{prefix}stack_element* elements; unsigned int current; unsigned int max; unsigned char free; } %{prefix}pstate; #define %{upper_prefix}PUSH_MORE -1 #define %{upper_prefix}TERMINALS %{grammar.terminals.size} #define %{upper_prefix}STATES %{table.size} const char* %{prefix}token_string(%{terminal_type} token); int %{prefix}lex(%{stype}* lval%{lex_params}); int %{prefix}parse_push(%{parse_params}); int %{prefix}parse_pull(%{parse_params}); %{prefix}pstate* %{prefix}pstate_new(); void %{prefix}pstate_delete(%{prefix}pstate* stack); #endif