X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/11707b2b48fb781ff0e7fd3befdfb02f787a76e4..57597927ef1b9cc751df4314764a6edd575ffc8b:/data/java.m4 diff --git a/data/java.m4 b/data/java.m4 index 9872505a..cff774d8 100644 --- a/data/java.m4 +++ b/data/java.m4 @@ -2,7 +2,7 @@ # Java language support for Bison -# Copyright (C) 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2007-2013 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,16 +17,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . - -# b4_comment(TEXT) -# ---------------- -m4_define([b4_comment], [/* m4_bpatsubst([$1], [ -], [ - ]) */]) +m4_include(b4_pkgdatadir/[c-like.m4]) # b4_list2(LIST1, LIST2) -# -------------------------- +# ---------------------- # Join two lists with a comma if necessary. m4_define([b4_list2], [$1[]m4_ifval(m4_quote($1), [m4_ifval(m4_quote($2), [[, ]])])[]$2]) @@ -108,7 +103,7 @@ m4_define([b4_int_type], # b4_int_type_for(NAME) # --------------------- # Return the smallest int type able to handle numbers ranging from -# `NAME_min' to `NAME_max' (included). +# 'NAME_min' to 'NAME_max' (included). m4_define([b4_int_type_for], [b4_int_type($1_min, $1_max)]) @@ -117,11 +112,13 @@ m4_define([b4_int_type_for], m4_define([b4_null], [null]) -# b4_typed_parser_table(TYPE, NAME, DATA) -# --------------------------------------- -m4_define([b4_typed_parser_table], -[[private static final ]$1[ $2[] = $2init(); - private static final ]$1[[] $2init() +# b4_typed_parser_table_define(TYPE, NAME, DATA, COMMENT) +# ------------------------------------------------------- +m4_define([b4_typed_parser_table_define], +[m4_ifval([$4], [b4_comment([$4]) + ])dnl +[private static final ]$1[ yy$2_[] = yy$2_init(); + private static final ]$1[[] yy$2_init() { return new ]$1[[] { @@ -130,33 +127,30 @@ m4_define([b4_typed_parser_table], }]]) -# b4_integral_parser_table(NAME, DATA) -#------------------------------------- -m4_define([b4_integral_parser_table], -[b4_typed_parser_table([b4_int_type_for([$2])], [$1], [$2])]) +# b4_integral_parser_table_define(NAME, DATA, COMMENT) +#----------------------------------------------------- +m4_define([b4_integral_parser_table_define], +[b4_typed_parser_table_define([b4_int_type_for([$2])], [$1], [$2], [$3])]) ## ------------------------- ## ## Assigning token numbers. ## ## ------------------------- ## -# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER) -# --------------------------------------- +# b4_token_enum(TOKEN-NUM) +# ------------------------ # Output the definition of this token as an enum. m4_define([b4_token_enum], -[ /** Token number, to be returned by the scanner. */ - static final int $1 = $2; -]) +[b4_token_format([ /** Token number, to be returned by the scanner. */ + static final int %s = %s; +], [$1])]) - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- +# b4_token_enums +# -------------- # Output the definition of the tokens (if there are) as enums. m4_define([b4_token_enums], -[m4_if([$#$1], [1], [], -[/* Tokens. */ -m4_map([b4_token_enum], [$@])]) -]) +[b4_any_token_visible_if([/* Tokens. */ +b4_symbol_foreach([b4_token_enum])])]) # b4-case(ID, CODE) # ----------------- @@ -167,13 +161,20 @@ m4_define([b4_case], [ case $1: break; ]) +# b4_predicate_case(LABEL, CONDITIONS) +# ------------------------------------ +m4_define([b4_predicate_case], [ case $1: + if (! ($2)) YYERROR; + break; + ]) + ## ---------------- ## ## Default values. ## ## ---------------- ## -m4_define([b4_yystype], [b4_percent_define_get([[stype]])]) -b4_percent_define_default([[stype]], [[Object]]) +m4_define([b4_yystype], [b4_percent_define_get([[api.value.type]])]) +b4_percent_define_default([[api.value.type]], [[Object]]) # %name-prefix m4_define_default([b4_prefix], [[YY]]) @@ -190,11 +191,11 @@ m4_define([b4_throws], [b4_percent_define_get([[throws]])]) b4_percent_define_default([[init_throws]], []) m4_define([b4_init_throws], [b4_percent_define_get([[init_throws]])]) -b4_percent_define_default([[location_type]], [Location]) -m4_define([b4_location_type], [b4_percent_define_get([[location_type]])]) +b4_percent_define_default([[api.location.type]], [Location]) +m4_define([b4_location_type], [b4_percent_define_get([[api.location.type]])]) -b4_percent_define_default([[position_type]], [Position]) -m4_define([b4_position_type], [b4_percent_define_get([[position_type]])]) +b4_percent_define_default([[api.position.type]], [Position]) +m4_define([b4_position_type], [b4_percent_define_get([[api.position.type]])]) ## ----------------- ## @@ -245,7 +246,7 @@ m4_define([b4_lex_param], b4_lex_param) m4_define([b4_parse_param], b4_parse_param) # b4_lex_param_decl -# ------------------- +# ----------------- # Extra formal arguments of the constructor. m4_define([b4_lex_param_decl], [m4_ifset([b4_lex_param], @@ -273,7 +274,7 @@ m4_define([b4_parse_param_decl], # b4_lex_param_call -# ------------------- +# ----------------- # Delegating the lexer parameters to the lexer constructor. m4_define([b4_lex_param_call], [m4_ifset([b4_lex_param],