欢迎光临散文网 会员登陆 & 注册

Tiny+ 语言词法之C语言

2023-05-21 09:08 作者:玟玟的大宝贝  | 我要投稿

访问【WRITE-BUG数字空间】_[内附完整源码和文档]

语义分析本质上就是在语法分析的基础上进一步完善分析的功能。举个例子来说,在语法分析部分的 if_stmt 函数中,在语义上判断条件必须返回布尔类型的值,因此我们加入一个判断,判断是否结果为布尔类型,如果不是的话就抛出异常。

一、关键词(KEY)

Tiny+ 中可能出现的关键词包括以下这些

// 定义语法中所有可能出现的关键词 bool Token::is_KEY(string& str) { return str == "true" || str == "false" || str == "or" || str == "and" || str == "not" || str == "int" || str == "bool" || str == "string" || str == "while" || str == "do" || str == "if" || str == "then" || str == "else" || str == "end" || str == "repeat" || str == "until" || str == "read" || str == "write"; }

二、特殊符号(SYM)

常见特殊符号包括以下这些,其中注释用大括号包括。

// 判断是否为特殊符号 bool LexicalAnalysis::is_special_symbol(char c) { return c == ':' || c == ',' || c == ';' || c == '<' || c == '>' || c == '=' || c == '+' || c == '-' || c == '*' || c == '/' || c == '(' || c == ')' || c == '{' || c == '}'; }

其中单引号包括起来的是字符串,需要特殊考虑。在处理单引号包括的内容时,我们不做任何处理,并维持当前单引号状态

三、标识符(ID)

标识符由非数字开头的字符串,用来代表变量名等。

四、空白(blank)

Tiny 中常见空白包括:空格(0x20)、水平制表(0x09)、垂直制表(0x0B)、换页(0x0C)、回车(0x0D)和换行符(0x0A)

语义分析实验

一、实验目的

语义分析本质上就是在语法分析的基础上进一步完善分析的功能。举个例子来说,在语法分析部分的 if_stmt 函数中,在语义上判断条件必须返回布尔类型的值,因此我们加入一个判断,判断是否结果为布尔类型,如果不是的话就抛出异常。


Tiny+ 语言词法之C语言的评论 (共 条)

分享到微博请遵守国家法律