📄 yyacc
字号:
#!/bin/sh# yyacc - yacc wrapper## Allows tokens to be written as `literal` and then automatically # substituted with #defined tokens.## Usage:# yyacc file.y filetab.h file.yy ## inputs:# file.yy yacc grammar with ` literals## outputs:# file.y yacc grammar# filetab.h array of string <-> token mappings## 03-13-93 - Documented and p moved in sed command (for some reason, # s/x/y/p doesn't work).# 10-12-93 - Take basename as second argument.# 12-31-96 - reversed order of args to be compatible with GenFile rule# 03/19/02 (seiwald) - suffix symbols with _t to avoid conflicts#outy=${1?}outh=${2?}in=${3?}out=`basename $in .yy`T=/tmp/yy$$trap 'rm -f $T.*' 0sed ' : 1 /`/{ h s/[^`]*`\([^`]*\)`.*/\1/ p g s/[^`]*`[^`]*`// b 1 } d' $in | sort -u | sed ' h y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/ s/:/_COLON/ s/!/_BANG/ s/&&/_AMPERAMPER/ s/&/_AMPER/ s/+/_PLUS/ s/||/_BARBAR/ s/|/_BAR/ s/;/_SEMIC/ s/-/_MINUS/ s/</_LANGLE/ s/>/_RANGLE/ s/\./_PERIOD/ s/?/_QUESTION/ s/=/_EQUALS/ s/,/_COMMA/ s/\[/_LBRACKET/ s/]/_RBRACKET/ s/{/_LBRACE/ s/}/_RBRACE/ s/(/_LPAREN/ s/)/_RPAREN/ s/.*/&_t/ G s/\n/ /' > $T.1sed ' s:^\(.*\) \(.*\)$:s/`\2`/\1/g: s:\.:\\.:g s:\[:\\[:g' $T.1 > $T.srm -f $outy $outh( sed 's:^\(.*\) \(.*\)$:%token \1:' $T.1 sed -f $T.s $in) > $outy( sed 's:^\(.*\) \(.*\)$: { "\2", \1 },:' $T.1 ) > $outh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -