📄 plain.c
字号:
/*@A (C) 1992 Allen I. Holub */
/* Basic parser, shows the structure but there's no code generation */
#include <stdio.h>
#include "lex.h"
statements()
{
/* statements -> expression SEMI
* | expression SEMI statements
*/
expression();
if( match( SEMI ) )
advance();
else
fprintf( stderr, "%d: Inserting missing semicolon\n", yylineno );
if( !match(EOI) )
statements(); /* Do another statement. */
}
expression()
{
/* expression -> term expression' */
term();
expr_prime();
}
expr_prime()
{
/* expression' -> PLUS term expression'
* | epsilon
*/
if( match( PLUS ) )
{
advance();
term();
expr_prime();
}
}
term()
{
/* term -> factor term' */
factor();
term_prime();
}
term_prime()
{
/* term' -> TIMES factor term'
* | epsilon
*/
if( match( TIMES ) )
{
advance();
factor();
term_prime();
}
}
factor()
{
/* factor -> NUM_OR_ID
* | LP expression RP
*/
if( match(NUM_OR_ID) )
advance();
else if( match(LP) )
{
advance();
expression();
if( match(RP) )
advance();
else
fprintf( stderr, "%d: Mismatched parenthesis\n", yylineno);
}
else
fprintf( stderr, "%d Number or identifier expected\n", yylineno );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -