diff options
Diffstat (limited to 'contrib/gdb/gdb/jv-exp.y')
-rw-r--r-- | contrib/gdb/gdb/jv-exp.y | 122 |
1 files changed, 60 insertions, 62 deletions
diff --git a/contrib/gdb/gdb/jv-exp.y b/contrib/gdb/gdb/jv-exp.y index 1b80ab4..41da7d0 100644 --- a/contrib/gdb/gdb/jv-exp.y +++ b/contrib/gdb/gdb/jv-exp.y @@ -48,6 +48,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" /* Required by objfiles.h. */ #include "symfile.h" /* Required by objfiles.h. */ #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */ +#include "block.h" /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), as well as gratuitiously global symbol names, so we can have multiple @@ -85,6 +86,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define yylloc java_lloc #define yyreds java_reds /* With YYDEBUG defined */ #define yytoks java_toks /* With YYDEBUG defined */ +#define yyname java_name /* With YYDEBUG defined */ +#define yyrule java_rule /* With YYDEBUG defined */ #define yylhs java_yylhs #define yylen java_yylen #define yydefred java_yydefred @@ -96,9 +99,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define yycheck java_yycheck #ifndef YYDEBUG -#define YYDEBUG 0 /* Default to no yydebug support */ +#define YYDEBUG 1 /* Default to yydebug support */ #endif +#define YYFPRINTF parser_fprintf + int yyparse (void); static int yylex (void); @@ -175,7 +180,7 @@ static int parse_number (char *, int, int, YYSTYPE *); %token <opcode> ASSIGN_MODIFY -%token THIS SUPER NEW +%token SUPER NEW %left ',' %right '=' ASSIGN_MODIFY @@ -361,9 +366,6 @@ Primary: PrimaryNoNewArray: Literal -| THIS - { write_exp_elt_opcode (OP_THIS); - write_exp_elt_opcode (OP_THIS); } | '(' Expression ')' | ClassInstanceCreationExpression | FieldAccess @@ -388,7 +390,8 @@ rcurly: ClassInstanceCreationExpression: NEW ClassType '(' ArgumentList_opt ')' - { error ("FIXME - ClassInstanceCreationExpression"); } + { internal_error (__FILE__, __LINE__, + _("FIXME - ClassInstanceCreationExpression")); } ; ArgumentList: @@ -406,9 +409,11 @@ ArgumentList_opt: ArrayCreationExpression: NEW PrimitiveType DimExprs Dims_opt - { error ("FIXME - ArrayCreatiionExpression"); } + { internal_error (__FILE__, __LINE__, + _("FIXME - ArrayCreationExpression")); } | NEW ClassOrInterfaceType DimExprs Dims_opt - { error ("FIXME - ArrayCreatiionExpression"); } + { internal_error (__FILE__, __LINE__, + _("FIXME - ArrayCreationExpression")); } ; DimExprs: @@ -443,11 +448,11 @@ FieldAccess: MethodInvocation: Name '(' ArgumentList_opt ')' - { error ("method invocation not implemented"); } + { error (_("Method invocation not implemented")); } | Primary '.' SimpleName '(' ArgumentList_opt ')' - { error ("method invocation not implemented"); } + { error (_("Method invocation not implemented")); } | SUPER '.' SimpleName '(' ArgumentList_opt ')' - { error ("method invocation not implemented"); } + { error (_("Method invocation not implemented")); } ; ArrayAccess: @@ -537,7 +542,7 @@ CastExpression: int i; int base = expout_ptr - last_exp_size - 3; if (base < 0 || expout->elts[base+2].opcode != OP_TYPE) - error ("invalid cast expression"); + error (_("Invalid cast expression")); type = expout->elts[base+1].type; /* Remove the 'Expression' and slide the UnaryExpressionNotPlusMinus down to replace it. */ @@ -677,16 +682,16 @@ Expression: static int parse_number (p, len, parsed_float, putithere) - register char *p; - register int len; + char *p; + int len; int parsed_float; YYSTYPE *putithere; { - register ULONGEST n = 0; + ULONGEST n = 0; ULONGEST limit, limit_div_base; - register int c; - register int base = input_radix; + int c; + int base = input_radix; struct type *type; @@ -793,7 +798,7 @@ parse_number (p, len, parsed_float, putithere) return ERROR; if (n > limit_div_base || (n *= base) > limit - c) - error ("Numeric constant too large."); + error (_("Numeric constant too large")); n += c; } @@ -862,10 +867,12 @@ yylex () retry: + prev_lexptr = lexptr; + tokstart = lexptr; /* See if it is a special token of length 3. */ for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++) - if (STREQN (tokstart, tokentab3[i].operator, 3)) + if (strncmp (tokstart, tokentab3[i].operator, 3) == 0) { lexptr += 3; yylval.opcode = tokentab3[i].opcode; @@ -874,7 +881,7 @@ yylex () /* See if it is a special token of length 2. */ for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++) - if (STREQN (tokstart, tokentab2[i].operator, 2)) + if (strncmp (tokstart, tokentab2[i].operator, 2) == 0) { lexptr += 2; yylval.opcode = tokentab2[i].opcode; @@ -901,7 +908,7 @@ yylex () if (c == '\\') c = parse_escape (&lexptr); else if (c == '\'') - error ("Empty character constant."); + error (_("Empty character constant")); yylval.typed_val_int.val = c; yylval.typed_val_int.type = java_char_type; @@ -914,12 +921,12 @@ yylex () { lexptr = tokstart + namelen; if (lexptr[-1] != '\'') - error ("Unmatched single quote."); + error (_("Unmatched single quote")); namelen -= 2; tokstart++; goto tryname; } - error ("Invalid character constant."); + error (_("Invalid character constant")); } return INTEGER_LITERAL; @@ -960,7 +967,7 @@ yylex () { /* It's a number. */ int got_dot = 0, got_e = 0, toktype; - register char *p = tokstart; + char *p = tokstart; int hex = input_radix > 10; if (c == '0' && (p[1] == 'x' || p[1] == 'X')) @@ -1004,7 +1011,7 @@ yylex () memcpy (err_copy, tokstart, p - tokstart); err_copy[p - tokstart] = 0; - error ("Invalid number \"%s\".", err_copy); + error (_("Invalid number \"%s\""), err_copy); } lexptr = p; return toktype; @@ -1076,7 +1083,7 @@ yylex () } while ((*tokptr != '"') && (*tokptr != '\0')); if (*tokptr++ != '"') { - error ("Unterminated string in expression."); + error (_("Unterminated string in expression")); } tempbuf[tempbufindex] = '\0'; /* See note above */ yylval.sval.ptr = tempbuf; @@ -1088,7 +1095,7 @@ yylex () if (!(c == '_' || c == '$' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) /* We must have come across a bad character (e.g. ';'). */ - error ("Invalid character '%c' in expression.", c); + error (_("Invalid character '%c' in expression"), c); /* It's a name. See how long it is. */ namelen = 0; @@ -1126,54 +1133,43 @@ yylex () switch (namelen) { case 7: - if (STREQN (tokstart, "boolean", 7)) + if (DEPRECATED_STREQN (tokstart, "boolean", 7)) return BOOLEAN; break; case 6: - if (STREQN (tokstart, "double", 6)) + if (DEPRECATED_STREQN (tokstart, "double", 6)) return DOUBLE; break; case 5: - if (STREQN (tokstart, "short", 5)) + if (DEPRECATED_STREQN (tokstart, "short", 5)) return SHORT; - if (STREQN (tokstart, "false", 5)) + if (DEPRECATED_STREQN (tokstart, "false", 5)) { yylval.lval = 0; return BOOLEAN_LITERAL; } - if (STREQN (tokstart, "super", 5)) + if (DEPRECATED_STREQN (tokstart, "super", 5)) return SUPER; - if (STREQN (tokstart, "float", 5)) + if (DEPRECATED_STREQN (tokstart, "float", 5)) return FLOAT; break; case 4: - if (STREQN (tokstart, "long", 4)) + if (DEPRECATED_STREQN (tokstart, "long", 4)) return LONG; - if (STREQN (tokstart, "byte", 4)) + if (DEPRECATED_STREQN (tokstart, "byte", 4)) return BYTE; - if (STREQN (tokstart, "char", 4)) + if (DEPRECATED_STREQN (tokstart, "char", 4)) return CHAR; - if (STREQN (tokstart, "true", 4)) + if (DEPRECATED_STREQN (tokstart, "true", 4)) { yylval.lval = 1; return BOOLEAN_LITERAL; } - if (current_language->la_language == language_cplus - && STREQN (tokstart, "this", 4)) - { - static const char this_name[] = - { CPLUS_MARKER, 't', 'h', 'i', 's', '\0' }; - - if (lookup_symbol (this_name, expression_context_block, - VAR_NAMESPACE, (int *) NULL, - (struct symtab **) NULL)) - return THIS; - } break; case 3: - if (STREQN (tokstart, "int", 3)) + if (strncmp (tokstart, "int", 3) == 0) return INT; - if (STREQN (tokstart, "new", 3)) + if (strncmp (tokstart, "new", 3) == 0) return NEW; break; default: @@ -1207,7 +1203,13 @@ void yyerror (msg) char *msg; { - error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr); + if (prev_lexptr) + lexptr = prev_lexptr; + + if (msg) + error (_("%s: near `%s'"), msg, lexptr); + else + error (_("error in expression, near `%s'"), lexptr); } static struct type * @@ -1218,7 +1220,7 @@ java_type_from_name (name) char *tmp = copy_name (name); struct type *typ = java_lookup_class (tmp); if (typ == NULL || TYPE_CODE (typ) != TYPE_CODE_STRUCT) - error ("No class named %s.", tmp); + error (_("No class named `%s'"), tmp); return typ; } @@ -1226,14 +1228,12 @@ java_type_from_name (name) Otherwise, return 0. */ static int -push_variable (name) - struct stoken name; - +push_variable (struct stoken name) { char *tmp = copy_name (name); int is_a_field_of_this = 0; struct symbol *sym; - sym = lookup_symbol (tmp, expression_context_block, VAR_NAMESPACE, + sym = lookup_symbol (tmp, expression_context_block, VAR_DOMAIN, &is_a_field_of_this, (struct symtab **) NULL); if (sym && SYMBOL_CLASS (sym) != LOC_TYPEDEF) { @@ -1300,9 +1300,7 @@ push_fieldnames (name) Handle a qualified name, where DOT_INDEX is the index of the first '.' */ static void -push_qualified_expression_name (name, dot_index) - struct stoken name; - int dot_index; +push_qualified_expression_name (struct stoken name, int dot_index) { struct stoken token; char *tmp; @@ -1361,7 +1359,7 @@ push_qualified_expression_name (name, dot_index) while (dot_index < name.length && name.ptr[dot_index] != '.') dot_index++; } - error ("unknown type `%.*s'", name.length, name.ptr); + error (_("unknown type `%.*s'"), name.length, name.ptr); } /* Handle Name in an expression (or LHS). @@ -1410,9 +1408,9 @@ push_expression_name (name) builtin_type_int); } else if (!have_full_symbols () && !have_partial_symbols ()) - error ("No symbol table is loaded. Use the \"file\" command."); + error (_("No symbol table is loaded. Use the \"file\" command")); else - error ("No symbol \"%s\" in current context.", tmp); + error (_("No symbol \"%s\" in current context"), tmp); } } |