📄 c.y
字号:
# define TOKEN char# define VALUE char*# define STACKTOKENS 1# define STACKSIZE 2048# include "cc.h"# include "preccx.h"# undef UNSETNAME# include "preamble.h" /* -- a shot at C-expressions -- (just in order to count brackets!) */@ atomexpr = monexpr@ | fnexpr@ | arrayexpr@ | yvar@ | cvar@ | constant@ | cast@ | brktexpr@ cast = brkttype { brkttype : VV(2)=V(2); :}* atomexpr :VV(2)=V(2);:@ atomtype = brkttype@ | IDENTIFIER@ type = atomtype { WHITESPACE typeconstruct : VV(3)=V(1); : }*@ brkttype = openparen WHITESPACE type WHITESPACE closeparen :VV(5)=V(3);:@ star = STAR : putchar('*'); :@ typeconstruct = star @ | openparen WHITESPACE closeparen :VV(3)=V(1);:@ | openbracket WHITESPACE closebracket :VV(3)=V(1);:@ cvar = IDENTIFIER@ yvar = DOLLARID@ constant = NUMBER@ | STRING@ | CHARCONST@ expr = atomexpr { WHITESPACE binop WHITESPACE expr : VV(5) = V(1); : }*@ monexpr = monop atomexpr : VV(2)=V(2); : @ fnexpr = IDENTIFIER WHITESPACE rdbrktargs : VV(3)=V(1); : @ arrayexpr= IDENTIFIER WHITESPACE sqbrktargs :VV(3)=V(1);: @ brktexpr = openparen WHITESPACE someargs WHITESPACE closeparen : VV(5)=V(3); :@ comment = COMMENT /* overgenerous - allows arbitrary infixes so long as they have the right chars in them */@ binop = binopone { binopone : VV(2)=V(1); : }*@ binopone = BINOPCHAR : VV(1)=putchar(T(1)); :@ monoptwo = PLUSPLUS :VV(1)=putname("++");: @ | MINUSMINUS :VV(1)=putname("--");: @ monopone = MONOPCHAR :putchar(T(1));:@ monop = monoptwo@ | monopone
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -