1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Checking GLR Parsing. -*- Autotest -*- 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is free software; you can redistribute it and/or modify 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# it under the terms of the GNU General Public License as published by 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# the Free Software Foundation; either version 2, or (at your option) 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# any later version. 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful, 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details. 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# along with this program; if not, write to the Free Software 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# 02110-1301, USA. 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_BANNER([[C++ Type Syntax (GLR).]]) 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# _AT_TEST_GLR_CXXTYPES(DECL, RESOLVE1, RESOLVE2) 22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ----------------------------------------------- 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Store into types.y the calc program, with DECL inserted as a declaration, 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# and with RESOLVE1 and RESOLVE2 as annotations on the conflicted rule for 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# stmt. Then compile the result. 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_TEST_GLR_CXXTYPES], 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_BISON_OPTION_PUSHDEFS([$1]) 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA_GRAMMAR([types.y], 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[/* Simplified C++ Type and Expression Grammar. */ 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project$1 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%{ 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project #include <stdio.h> 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project union Node { 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct { 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int isNterm; 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int parents; 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } nodeInfo; 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct { 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int isNterm; /* 1 */ 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int parents; 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *form; 46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project union Node *children[3]; 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } nterm; 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct { 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int isNterm; /* 0 */ 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int parents; 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *text; 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } term; 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef union Node Node; 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static Node *new_nterm (char const *, Node *, Node *, Node *); 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static Node *new_term (char *); 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static void free_node (Node *); 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static char *node_to_string (Node *); 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project #define YYSTYPE Node * 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]m4_bmatch([$2], [stmtMerge], 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);])[ 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project #define YYINITDEPTH 10 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project #define YYSTACKEXPANDABLE 1 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct YYLTYPE; 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYPURE 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if YYLSP_NEEDED 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define LEX_PARAMETERS YYSTYPE *lvalp, struct YYLTYPE *llocp 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define ERROR_PARAMETERS struct YYLTYPE *llocp, char const *s 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define LEX_PARAMETERS YYSTYPE *lvalp 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef LEX_PARAMETERS 74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define LEX_PARAMETERS void 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef ERROR_PARAMETERS 77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define ERROR_PARAMETERS char const *s 78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yylex (LEX_PARAMETERS); 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void yyerror (ERROR_PARAMETERS); 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%} 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token TYPENAME ID 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%right '=' 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%left '+' 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%glr-parser 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%destructor { free_node ($$); } stmt expr decl declarator TYPENAME ID 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%% 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectprog : 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | prog stmt { 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *output;]AT_LOCATION_IF([ 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project printf ("%d.%d-%d.%d: ", 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project @2.first_line, @2.first_column, 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project @2.last_line, @2.last_column);])[ 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project output = node_to_string (]$[2); 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project printf ("%s\n", output); 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free (output); 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free_node (]$[2); 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstmt : expr ';' $2 { $$ = ]$[1; } 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | decl $3 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | error ';' { $$ = new_nterm ("<error>", 0, 0, 0); } 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | '@' { YYACCEPT; } 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexpr : ID 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | TYPENAME '(' expr ')' 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { $$ = new_nterm ("<cast>(%s,%s)", ]$[3, ]$[1, 0); } 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | expr '+' expr { $$ = new_nterm ("+(%s,%s)", ]$[1, ]$[3, 0); } 117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | expr '=' expr { $$ = new_nterm ("=(%s,%s)", ]$[1, ]$[3, 0); } 118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdecl : TYPENAME declarator ';' 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { $$ = new_nterm ("<declare>(%s,%s)", ]$[1, ]$[2, 0); } 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | TYPENAME declarator '=' expr ';' 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { $$ = new_nterm ("<init-declare>(%s,%s,%s)", ]$[1, 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]$[2, ]$[4); } 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdeclarator : ID 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | '(' declarator ')' { $$ = ]$[2; } 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%% 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <ctype.h> 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <stdlib.h> 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <string.h> 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <stdarg.h> 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectmain (int argc, char **argv) 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (argc != 2) 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project abort (); 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!freopen (argv[1], "r", stdin)) 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 3; 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyparse (); 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyylex (LEX_PARAMETERS) 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char buffer[256]; 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int c; 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project unsigned int i; 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static int lineNum = 1; 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static int colNum = 0; 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYPURE 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yylloc 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yylloc (*llocp) 160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yylval 161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yylval (*lvalp) 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (1) 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project c = getchar (); 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (c) 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case EOF: 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0; 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\t': 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project colNum = (colNum + 7) & ~7; 173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case ' ': case '\f': 175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project colNum += 1; 176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\n': 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lineNum += 1; 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project colNum = 0; 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int tok; 184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYLSP_NEEDED 185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc.first_line = yylloc.last_line = lineNum; 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc.first_column = colNum; 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (isalpha (c)) 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project i = 0; 191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do 193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project buffer[i++] = c; 195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project colNum += 1; 196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (i == sizeof buffer - 1) 197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project abort (); 198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project c = getchar (); 199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (isalnum (c) || c == '_'); 201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ungetc (c, stdin); 203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project buffer[i++] = 0; 204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project tok = isupper ((unsigned char) buffer[0]) ? TYPENAME : ID; 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = new_term (strcpy ((char *) malloc (i), buffer)); 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project colNum += 1; 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project tok = c; 211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = 0; 212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYLSP_NEEDED 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc.last_column = colNum-1; 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return tok; 217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid 223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyerror (ERROR_PARAMETERS) 224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYPURE && YYLSP_NEEDED 226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pacify GCC by using llocp. */ 227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! llocp) 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project abort (); 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "%s\n", s); 231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic Node * 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnew_nterm (char const *form, Node *child0, Node *child1, Node *child2) 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Node *node = (Node *) malloc (sizeof (Node)); 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nterm.isNterm = 1; 238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nterm.parents = 0; 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nterm.form = form; 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nterm.children[0] = child0; 241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (child0) 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project child0->nodeInfo.parents += 1; 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nterm.children[1] = child1; 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (child1) 245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project child1->nodeInfo.parents += 1; 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nterm.children[2] = child2; 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (child2) 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project child2->nodeInfo.parents += 1; 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return node; 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic Node * 253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnew_term (char *text) 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Node *node = (Node *) malloc (sizeof (Node)); 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->term.isNterm = 0; 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->term.parents = 0; 258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->term.text = text; 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return node; 260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectfree_node (Node *node) 264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!node) 266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node->nodeInfo.parents -= 1; 268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Free only if 0 (last parent) or -1 (no parents). */ 269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (node->nodeInfo.parents > 0) 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (node->nodeInfo.isNterm == 1) 272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free_node (node->nterm.children[0]); 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free_node (node->nterm.children[1]); 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free_node (node->nterm.children[2]); 276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free (node->term.text); 279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free (node); 280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic char * 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnode_to_string (Node *node) 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *child0; 286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *child1; 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *child2; 288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *buffer; 289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!node) 290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project buffer = (char *) malloc (1); 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project buffer[0] = 0; 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (node->nodeInfo.isNterm == 1) 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project child0 = node_to_string (node->nterm.children[0]); 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project child1 = node_to_string (node->nterm.children[1]); 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project child2 = node_to_string (node->nterm.children[2]); 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project buffer = (char *) malloc (strlen (node->nterm.form) + strlen (child0) 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project + strlen (child1) + strlen (child2) + 1); 301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project sprintf (buffer, node->nterm.form, child0, child1, child2); 302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free (child0); 303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free (child1); 304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free (child2); 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project buffer = strdup (node->term.text); 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return buffer; 309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]] 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_bmatch([$2], [stmtMerge], 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[static YYSTYPE 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectstmtMerge (YYSTYPE x0, YYSTYPE x1) 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return new_nterm ("<OR>(%s,%s)", x0, x1, 0); 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project) 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([test-input], 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[ 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectz + q; 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectT x; 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectT x = y; 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectx = y; 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectT (x) + y; 333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectT (x); 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectT (y) = z + q; 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectT (y y) = z + q; 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectz + q; 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project@ 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectThis is total garbage, but it should be ignored. 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([bison -o types.c types.y], 0, [], ignore) 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_COMPILE([types]) 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_BISON_OPTION_POPDEFS 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]) 351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_RESOLVED_GLR_OUTPUT], 353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[+(z,q) 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<declare>(T,x) 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<init-declare>(T,x,y) 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project=(x,y) 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project+(<cast>(x,T),y) 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<declare>(T,x) 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<init-declare>(T,y,+(z,q)) 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<error> 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project+(z,q) 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_RESOLVED_GLR_OUTPUT_WITH_LOC], 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[3.0-3.5: +(z,q) 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project5.0-5.3: <declare>(T,x) 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project7.0-7.7: <init-declare>(T,x,y) 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project9.0-9.5: =(x,y) 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project11.0-11.9: +(<cast>(x,T),y) 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project13.0-13.5: <declare>(T,x) 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project15.0-15.13: <init-declare>(T,y,+(z,q)) 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project17.0-17.15: <error> 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project19.0-19.5: +(z,q) 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_AMBIG_GLR_OUTPUT], 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[+(z,q) 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<declare>(T,x) 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<init-declare>(T,x,y) 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project=(x,y) 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project+(<cast>(x,T),y) 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<OR>(<declare>(T,x),<cast>(x,T)) 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<OR>(<init-declare>(T,y,+(z,q)),=(<cast>(y,T),+(z,q))) 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project<error> 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project+(z,q) 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_AMBIG_GLR_OUTPUT_WITH_LOC], 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[3.0-3.5: +(z,q) 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project5.0-5.3: <declare>(T,x) 391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project7.0-7.7: <init-declare>(T,x,y) 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project9.0-9.5: =(x,y) 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project11.0-11.9: +(<cast>(x,T),y) 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project13.0-13.5: <OR>(<declare>(T,x),<cast>(x,T)) 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project15.0-15.13: <OR>(<init-declare>(T,y,+(z,q)),=(<cast>(y,T),+(z,q))) 396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project17.0-17.15: <error> 397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project19.0-19.5: +(z,q) 398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_GLR_STDERR], 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[syntax error 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([_AT_VERBOSE_GLR_STDERR], 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[syntax error, unexpected ID, expecting '=' or '+' or ')' 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------------------------------------------- ## 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Compile the grammar described in the documentation. ## 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------------------------------------------- ## 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Resolve ambiguity, impure, no locations]) 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([], 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%dprec 1], [%dprec 2]) 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Resolve ambiguity, impure, locations]) 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%locations],[%dprec 1],[%dprec 2]) 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Resolve ambiguity, pure, no locations]) 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%pure-parser], 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%dprec 1], [%dprec 2]) 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Resolve ambiguity, pure, locations]) 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%pure-parser %locations], 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%dprec 1], [%dprec 2]) 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Merge conflicting parses, impure, no locations]) 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([], 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%merge <stmtMerge>], [%merge <stmtMerge>]) 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Merge conflicting parses, impure, locations]) 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%locations], 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%merge <stmtMerge>], [%merge <stmtMerge>]) 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Merge conflicting parses, pure, no locations]) 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%pure-parser], 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%merge <stmtMerge>], [%merge <stmtMerge>]) 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Merge conflicting parses, pure, locations]) 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%pure-parser %locations], 461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%merge <stmtMerge>],[%merge <stmtMerge>]) 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([GLR: Verbose messages, resolve ambiguity, impure, no locations]) 467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project_AT_TEST_GLR_CXXTYPES([%error-verbose], 468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [%merge <stmtMerge>], [%merge <stmtMerge>]) 469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_PARSER_CHECK([[./types test-input]], 0, 470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _AT_AMBIG_GLR_OUTPUT, _AT_VERBOSE_GLR_STDERR) 471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP 472