⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headers.at

📁 bison 2.0 主要可以用来做语法分析用的
💻 AT
字号:
# Bison Parser Headers.                               -*- Autotest -*-# Copyright 2001 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# the Free Software Foundation; either version 2, or (at your option)# any later version.# This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.# You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA# 02111-1307, USA.AT_BANNER([[Parser Headers.]])## ---------------------- #### %union and --defines.  #### ---------------------- ##AT_SETUP([%union and --defines])AT_DATA([input.y],[%union{  int   integer;  char *string ;}%%exp: {};])AT_CHECK([bison --defines input.y])AT_CLEANUP## --------------------- #### Invalid CPP headers.  #### --------------------- ### AT_TEST_CPP_GUARD_H([INPUT-FILE-BASE)# -------------------------------------m4_define([AT_TEST_CPP_GUARD_H],[AT_SETUP([Invalid CPP guards: $1])# Possibly create inner directories.dirname=`AS_DIRNAME([$1])`AS_MKDIR_P([$dirname])AT_DATA_GRAMMAR([$1.y],[%{#include "$1.h"%}%%dummy:;%%#include "$1.h"])AT_CHECK([bison --defines=$1.h --output=y.tab.c $1.y])# CPP should be happy with it.AT_CHECK([$CC -E -I. y.tab.c], 0, [ignore])AT_CLEANUP])AT_TEST_CPP_GUARD_H([input/input])AT_TEST_CPP_GUARD_H([9foo])## ---------------- #### export YYLTYPE.  #### ---------------- ##AT_SETUP([export YYLTYPE])AT_DATA_GRAMMAR([input.y],[%locations%name-prefix="my_"%{#include <stdio.h>#include <stdlib.h>static intmy_lex (void){  return EOF;}static voidmy_error (const char *msg){  fprintf (stderr, "%s\n", msg);}%}%%exp:;])AT_CHECK([bison --defines -o input.c input.y])# YYLTYPE should be defined, and MY_LLOC declared.AT_DATA([caller.c],[[#include "input.h"YYLTYPE *my_llocp = &my_lloc;int my_parse (void);intmain (void){  return my_parse ();}]])# Link and execute, just to make sure everything is fine (and in# particular, that MY_LLOC is indeed defined somewhere).AT_COMPILE([caller.o], [-c caller.c])AT_COMPILE([input.o], [-c input.c])AT_COMPILE([caller], [caller.o input.o])AT_PARSER_CHECK([./caller])AT_CLEANUP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -