thegeorg cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
..
README-D.txt f606bdbedf Update contrib/tools/bison to 3.6.4 3 months ago
bison.m4 cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
c++-skel.m4 cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
c++.m4 cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
c-like.m4 cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
c-skel.m4 cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
c.m4 cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
glr.cc cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
lalr1.cc cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
location.cc cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
stack.hh cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
variant.hh cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago
yacc.c cd78824349 Update contrib/tools/bison to 3.7.6 3 months ago

README-D.txt

Some usage notes for the D Parser:

- it is a port of the Java parser, so interface is very similar.

- the lexer class needs to implement the interface 'Lexer' (similar to
java). It typically (depending on options) looks like this:

public interface Lexer
{
/**
* Method to retrieve the beginning position of the last scanned token.
* @return the position at which the last scanned token starts. */
@property YYPosition startPos ();

/**
* Method to retrieve the ending position of the last scanned token.
* @return the first position beyond the last scanned token. */
@property YYPosition endPos ();

/**
* Method to retrieve the semantic value of the last scanned token.
* @return the semantic value of the last scanned token. */
@property YYSemanticType semanticVal ();

/**
* Entry point for the scanner. Returns the token identifier corresponding
* to the next token and prepares to return the semantic value
* and beginning/ending positions of the token.
* @return the token identifier corresponding to the next token. */
TokenKind yylex ();

/**
* Entry point for error reporting. Emits an error
* referring to the given location in a user-defined way.
*
* @param loc The location of the element to which the
* error message is related
* @param s The string for the error message. */
void yyerror (YYLocation loc, string s);
}

- semantic types are handled by D unions (same as for C/C++ parsers)

- the following (non-standard) %defines are supported:

%define package ""
%define api.parser.class "my_class_name>"
%define position_type "my_position_type"
%define location_type "my_location_type"

- the following declarations basically work like in C/C++:

%locations
%error-verbose
%parse-param
%initial-action
%code
%union

- %destructor is not yet supported