📄 11.txt
字号:
%{
#include<stdio.h>
#include<ctype.h>
int regs[26];
int bass;
%}
;%start list
%token DIGIT LETTER
%left '|'
%left '&'
%left '+''-'
%left '*''/''%'
%left UMINUS /*SUPPLIES PRECEDE */
/* FOR UNARY MINUS */
%% /*beginning of rules section */
?????
list : /*empty*/
| list stat'\n'
| list error'\n'
{ yyerrok ;}
;
start : expr
{ ptrintf("%d\n",$1);}
|LETTER'='expr
{ regs[$1]=$3;}
;
expr : '('expr')'
{ $$=$2;}
|expr'+'expr
{$$=$1+$3;}
|expr'-'expr
{$$=$1-$3;}
|expr'*'expr
{$$=$1*$3;}
|expr'/'expr
{$$=$1/$3;}
|expr'%'expr
{$$=$1%$3;}
|expr'&'expr
{$$=$1&$3;}
|expr'|'expr
{$$=$1|$3;}
|'-'expr%prec UMINUS
{$$=-$2;}
|number
;
number : DIGIT
{$$=$1;base=($1==0?8:10;}
|number DIGIT
{$$=base*$1+$2;}
;
%% /*start of programs*/
yylex(){
/*lexcial analysis routine*/
/*return DIGIT for a digit,yylval=0
through 9*/
/*return LETTER for a lower case letter,
yylval=0 through 25*/
/*all other characters are
returned immediately*/
int c;
while ((c=getchar())=='')
}/*skip blanks*/
/*c is now nonblank*/
if(islower(c)){
yylval=c-'a';
return(LETTER);
}
if (isdigit(c)){
yylval=c-'0';
return(DIGIT);
}
return(c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -