summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/otps/otp.y
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2009-03-20 07:23:18 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2009-03-20 07:23:18 +0000
commit200cfaafaed3d870382579503f73a3838b427d51 (patch)
tree19c58032bebb5c88a85c4d361a8f7e32a47d1204 /Build/source/texk/web2c/otps/otp.y
parent008569ac3af17c78b8af1bdc65ae55059c7c4579 (diff)
new build system
git-svn-id: svn://tug.org/texlive/trunk@12442 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/otps/otp.y')
-rw-r--r--Build/source/texk/web2c/otps/otp.y330
1 files changed, 0 insertions, 330 deletions
diff --git a/Build/source/texk/web2c/otps/otp.y b/Build/source/texk/web2c/otps/otp.y
deleted file mode 100644
index a67c6a1c06d..00000000000
--- a/Build/source/texk/web2c/otps/otp.y
+++ /dev/null
@@ -1,330 +0,0 @@
-/* otp.y: Grammar for OTP files.
-
-This file is part of Omega,
-which is based on the web2c distribution of TeX.
-
-Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
-Copyright (C) 2005, 2006 Roozbeh Pournader
-
-Omega 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 of the License, or
-(at your option) any later version.
-
-Omega 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 Omega; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-*/
-
-%{
-#include "otp.h"
-#include "routines.h"
-#include "yystype.h"
-int k, len;
-
-void yyerror(char * msg)
-{
-fprintf(stderr, "line %d: %s\n", line_number, msg);
-}
-%}
-
-%token NUMBER
-%token ID
-%token STRING
-%token LEFTARROW
-%token RIGHTARROW
-%token INPUT
-%token OUTPUT
-%token ALIASES
-%token STATES
-%token TABLES
-%token EXPRESSIONS
-%token PUSH
-%token POP
-%token DIV
-%token MOD
-%token BEG
-%token END
-
-%left '+' '-'
-%left '*' DIV MOD
-
-%%
-
-File :
- Input
- Output
- Tables
- States
- Aliases
- Expressions
- ;
-
-Input :
- /* Empty */
- { input_bytes=2; }
- | INPUT NUMBER ';'
- { input_bytes=$2.yint; }
- ;
-
-Output :
- /* Empty */
- { output_bytes=2; }
- | OUTPUT NUMBER ';'
- { output_bytes=$2.yint; }
- ;
-
-Tables :
- /* Empty */
- | TABLES MoreTables
- ;
-
-MoreTables :
- OneTable
- | MoreTables OneTable
- ;
-
-OneTable :
- ID '[' NUMBER ']'
- { store_table($1.ystring, $3.yint); }
- '=' '{' Numbers '}' ';'
- ;
-
-Numbers :
- /* Empty */
- | MoreNumbers
- ;
-
-MoreNumbers :
- NUMBER
- { add_to_table($1.yint); }
- | MoreNumbers ',' NUMBER
- { add_to_table($3.yint); }
- ;
-
-States :
- /* Empty */
- | STATES MoreStates ';'
- ;
-
-MoreStates :
- ID
- { store_state($1.ystring); }
- | MoreStates ',' ID
- { store_state($3.ystring); }
- ;
-
-Aliases :
- /* Empty */
- | ALIASES MoreAliases
- ;
-
-MoreAliases :
- OneAlias
- | MoreAliases OneAlias
- ;
-
-OneAlias :
- ID '=' OneCompleteLeft ';'
- { store_alias($1.ystring, $3.yleft); }
- ;
-
-OneCompleteLeft :
- STRING
- { $$.yleft = StringLeft($1.ystring); }
- | OneLeft '<' NUMBER ',' NUMBER '>'
- { $$.yleft = CompleteLeft($1.yleft, $3.yint, $5.yint); }
- | OneLeft '<' NUMBER ',' '>'
- { $$.yleft = PlusLeft($1.yleft, $3.yint); }
- | OneLeft '<' NUMBER '>'
- { $$.yleft = CompleteLeft($1.yleft, $3.yint, $3.yint); }
- | OneLeft
- { $$.yleft = $1.yleft; }
- ;
-
-OneLeft :
- NUMBER
- { $$.yleft = SingleLeft($1.yint); }
- | NUMBER '-' NUMBER
- { $$.yleft = DoubleLeft($1.yint, $3.yint); }
- | '.'
- { $$.yleft = WildCard(); }
- | '^' '(' ChoiceLeft ')'
- { $$.yleft = NotChoiceLeft($3.ylleft); }
- | '(' ChoiceLeft ')'
- { $$.yleft = ChoiceLeft($2.ylleft); }
- | '{' ID '}'
- { $$.yleft = lookup_alias($2.ystring); }
- ;
-
-ChoiceLeft :
- OneLeft
- { $$.ylleft = llist1($1.yleft); }
- | ChoiceLeft '|' OneLeft
- { $$.ylleft = lappend1($1.ylleft, $3.yleft); }
- ;
-
-Expressions :
- EXPRESSIONS MoreExpressions
- {
- for(cur_state=0; cur_state<no_states; cur_state++) {
- if ((states[cur_state].no_exprs)==0) {
- out_int(OTP_LEFT_START, 0);
- } else {
- out_int(OTP_LEFT_RETURN, 0);
- }
- out_int(OTP_RIGHT_CHAR, 1);
- out_int(OTP_STOP, 0);
- }
- }
- ;
-
-MoreExpressions :
- OneExpr
- | MoreExpressions OneExpr
- ;
-
-OneExpr :
- LeftState
- { states[cur_state].no_exprs++; }
- TotalLeft
- { out_left($3.ylleft); right_offset=0; }
- RIGHTARROW Right
- { right_offset=OTP_PBACK_OFFSET; }
- PushBack RightState ';'
- { fill_in_left(); }
- ;
-
-PushBack :
- /* Empty */
- | LEFTARROW Right
- ;
-
-LeftState :
- /* Empty */
- { cur_state = 0; }
- | '<' ID '>'
- { cur_state = lookup_state($2.ystring); }
- ;
-
-TotalLeft :
- BegLeft Left EndLeft
- { $$.ylleft = lappend($1.ylleft, lappend($2.ylleft, $3.ylleft)); }
-| BegLeft EndLeft
- { $$.ylleft = lappend($1.ylleft, $2.ylleft); }
- ;
-
-BegLeft :
- /* Empty */
- { $$.ylleft = nil; }
- | BEG
- { $$.ylleft = llist1(BeginningLeft()); }
- ;
-
-EndLeft :
- /* Empty */
- { $$.ylleft = nil; }
- | END
- { $$.ylleft = llist1(EndLeft()); }
- ;
-
-Left :
- OneCompleteLeft
- { $$.ylleft = llist1($1.yleft); }
- | Left OneCompleteLeft
- { $$.ylleft = lappend1($1.ylleft, $2.yleft); }
- ;
-
-Right :
- /* Empty */
- | Right OneRight
- ;
-
-OneRight :
- STRING
- {
- len=strlen($1.ystring);
- for (k=0; k<len; k++) {
- out_right(OTP_RIGHT_NUM, ($1.ystring)[k]);
- }
- }
- | NUMBER
- { out_right(OTP_RIGHT_NUM, $1.yint); }
- | '\\' NUMBER
- { out_right(OTP_RIGHT_CHAR, $2.yint); }
- | '\\' '$'
- { out_right(OTP_RIGHT_LCHAR, 0); }
- | '\\' '(' '$' '-' NUMBER ')'
- { out_right(OTP_RIGHT_LCHAR, $5.yint); }
- | '\\' '*'
- {
- out_right(OTP_RIGHT_SOME, 0);
- out_int(0,0);
- }
- | '\\' '(' '*' '+' NUMBER ')'
- {
- out_right(OTP_RIGHT_SOME, $5.yint);
- out_int(0, 0);
- }
- | '\\' '(' '*' '-' NUMBER ')'
- {
- out_right(OTP_RIGHT_SOME, 0);
- out_int(0, $5.yint);
- }
- | '\\' '(' '*' '+' NUMBER '-' NUMBER ')'
- {
- out_right(OTP_RIGHT_SOME, $5.yint);
- out_int(0, $7.yint);
- }
- | '#' OneRightExpr
- { out_right(OTP_RIGHT_OUTPUT, 0); }
- ;
-
-RestRightExpr :
- OneRightExpr
- | RestRightExpr '+' OneRightExpr
- { out_int(OTP_ADD, 0); }
- | RestRightExpr '-' OneRightExpr
- { out_int(OTP_SUB, 0); }
- | RestRightExpr '*' OneRightExpr
- { out_int(OTP_MULT, 0); }
- | RestRightExpr DIV OneRightExpr
- { out_int(OTP_DIV, 0); }
- | RestRightExpr MOD OneRightExpr
- { out_int(OTP_MOD, 0); }
- | ID
- { out_int(OTP_PUSH_NUM, lookup_table($1.ystring)); }
- '[' RestRightExpr ']'
- { out_int(OTP_LOOKUP, 0); }
- ;
-
-OneRightExpr :
- NUMBER
- { out_int(OTP_PUSH_NUM, $1.yint); }
- | '\\' NUMBER
- { out_int(OTP_PUSH_CHAR, $2.yint); }
- | '\\' '$'
- { out_int(OTP_PUSH_LCHAR, 0); }
- | '\\' '(' '$' '-' NUMBER ')'
- { out_int(OTP_PUSH_LCHAR, $5.yint); }
- | '(' RestRightExpr ')'
- ;
-
-RightState :
- /* Empty */
- | '<' '>'
- { out_int(OTP_STATE_CHANGE, 0); }
- | '<' ID '>'
- { out_int(OTP_STATE_CHANGE, lookup_state($2.ystring)); }
- | '<' PUSH ID '>'
- { out_int(OTP_STATE_PUSH, lookup_state($3.ystring)); }
- | '<' POP '>'
- { out_int(OTP_STATE_POP, 0); }
- ;
-%%