- 论坛徽章:
- 0
|
本帖最后由 626788149 于 2016-04-13 20:36 编辑
介绍
这个语言与c语言非常相似,也与现有的很多程序设计语言有很多共同点。但也有很多地方与c语言不同,比如c-mini包含了foreach循环语句,在函数体中变量的声明顺序也与c语言不同。不同元素的类型使用不同的字体来表示:
关键字: for,while,foreach
记号TOKEN: ID,NUMLITERAL,STRLITERAL
非终结符:Nonterminals
TOKEN 的定义
letter = a | . . . | z | A | . . . | Z
digit = 0 | . . . | 9
NUMLITERAL = [+ | -] digit+
ID = letter (letter | digit)∗
STRLITERAL= "任何除了" 以外的字符"
BOOLITERAL = true | false
Comments = /* ......anything but except * /...... */
Whitespace =制表符,空格,换行
Keywords = for | while | foreach | int | bool | char | void | if | else | return | break | true | false | def | in
typedef enum {
ENDFILE , ERROR,
/*multicharacter symbols*/
ID, NUM , STRING,
/*reserved word*/
FOREACH , WHILE , INT , BOOL , CHAR , VOID , IF ,
ELSE , RETURN , BREAK , TRUE , FALSE, DEF,
/*SPECIAL SYMBOLS*/
SEMI,ASSIGN,EQ,LT,BT,LQ,BQ,PLUS,MINUS,TIMES,
OVER,LEFTPAREN,RIGHTPAREN,COMMA,CURLYBRACESL,
CURLYBRACESR,PLUSPLUS,MINUSMINUS,SQUAREBRACKL,SQUAREBRACKR,
/*whitespace*/
BLANK,TABLE,NEWLINE
} TokenType;
目标
我打算先写解释器,解释器完成以后再写代码生成器生成字节码 |
|