lex语录
来源:快速阅读法 发布时间:2013-10-24 点击:
lex语录篇一
基于LEX的C语言词法分析器
基于LEX的C语言词法分析器
一、LEX语法简介
(一)文件结构
Lex文件结构简单,分为三个部分:
声明段包括变量的声明、符号常量的声明和正则表达式声明。
希望出现在目标C源码中的代码,用%{…%}扩在一起。比如:
正则表达式声明的格式为“命名表达式”,比如: 功能函数即为正常的C语言代码,遵守C语言代码格式即可。
(二)Lex特性简介
1.Lex依次尝试每一个规则,尽可能地匹配最长的输入流。
2.如果有一些内容根本不匹配任何规则,那么Lex将把它拷贝到标准输出。
二、正则表达式简介
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
在这里,只用到了字符转义、重复、字符类、反义、贪婪与懒惰等较为基础的语法。以下就简单对涉及到的语法进行介绍。
(一)字符转义
例如,.*在正则表达式中表示匹配所有,因此若要匹配.或*,则需要对其进行转义,即\.和\*。
(二)重复
在对数字和标识符等进行匹配时,字符位数不止一位,但遵守相同的规则,因此使用“重复”进行匹配。
例如,对数字进行匹配:[0-9]+,“+”表示至少重复一次,即数字长度至少为1。
例如,对标识符进行匹配,由于C语言标识符必须以下
划线或字母开头,所以规则为:[_|A-Za-z]+(_|[A-Za-z]|[0-9])*。
“[_|A-Za-z]+”表示必须以下划线或字母开头,“(_|[A-Za-z]|[0-9])*”表示之后可以跟字母数字下划线,但是也可以不跟,这就是“+”和“*”所表示的“重复”的不同之处。
(三)字符类与反义
对没有预定义元字符的字符集合,需要在方括号里将其列出,例如,[aeiou]就是对任何一个英文元音字母的匹配,同理,
[0-9]代表的含义与元字符\d完全一致,都是对一位数字进行的匹配。
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:
对于元字符,其反义即为其大写:\D,匹配非数字的字符。
更为普遍的表达方式如下:
[^aeiou],匹配除了aeiou这几个字母以外的所有字符。
(四)贪婪与懒惰
与Lex对规则的处理类似,正则表达式也会在匹配整个表达式的前提下,匹配尽可能多的字符,这就是“贪婪”。
有时,需要匹配尽可能少的字符,就是“懒惰”匹配,具体的例子如下:
a.*?b,由于.*后加了?,表示“懒惰”匹配,因此会匹配最短的,以a开始,以b结束的字符。
例如字符串aabab,“贪婪”匹配的结果是aabab,而“懒惰”匹配的结果则是aab。
三、词法分类识别
这里,将源程序中的字符分为七类。
由于字符串对于词法分析以及后续的语法分析的意义不大,因此,这里将其单独列为一类;由于头文件的声明中会出现“<”“>”“””等分隔符,尤其是“<”和“>
”,会与运算
符中的大于小于号产生冲突,因此这里把头文件也单独列为一类。
(一)保留字
C语言共有32个保留字,如图:
(二)标识符
C语言标识符的要求是,必须以下划线或者字母开头,之后可以跟字母、数字、下划线。
(三)常数
由于常数的表达方式较多,这里只是代表性地选取了几种方式进行识别。
(四)操作符
lex语录篇二
基于LEX的C语言词法分析器
实验二 C-语言的词法分析器(基于Lex)
1. 课程设计目标
自动构造C-语言的的词法分析器,要求能够掌握编译原理的基本理论,,理解编译程序的基本结构,掌握编译各阶段的基本理论和技术,掌握编译程序设计的基本理论和步骤.,增强编写和调试高级语言源程序的能力,掌握词法分析的基本概念和实现方法,熟悉C-语言的各种Token。
。
2. 分析与设计
基于Parser Genarator的词法分析器构造方法
Lex输入文件由3个部分组成:定义集(definition),规则集(rule)和辅助程序集(auxiliary routine)或用户程序集(user routine)。这三个部分由位于新一行第一列的双百分号分开,因此,Lex输入文件的格式如下
{definitions}
%%
{rules}
%%
{auxiliary routines}
而且第一部分用“%{”和“%}”括起来。
第一和第三个部分为C语言的代码和函数定义,第二个部分为一些规则。
定义正则表达式如下
ID = letter letter*
NUM = digit digit*
Letter = a|…|z|A|…|Z
Digit = 0|…|9
Keyword = else|if|int|return|void|while
Special symbol = +|-|*|/|<|<=|>|>=|==|!=|=|;|,|(|)|[|]|{|}|/*|*/
White space = “ ”
Enter = \n
在lex中的构造
letter [A-Za-z]
digit [0-9]
id ({letter}|[_])({letter}|{digit}|[_])*
error_id ({digit})+({letter})+
num {digit}+
whitespace [ \t]+
enter [\n]+
在Lex中的规则定义构造
定义识别保留字规则
"int"|"else"|"return"|"void"|"if"|"while"
{Upper(yytext,yyleng);
printf("%d 行 ",lineno);
printf("%s reserved word\n",yytext);}//保留字
定义识别数字规则
{num}
{printf("%d 行 ",lineno);
printf("%s NUM\n",yytext);}//数字
定义识别专用符号规则
","|";"|"("|")"|"{"|"}"|"*"|"/"|"+"|"-"|">"|"<"|">="|"<="|"=="|"!="|"="|"/*"|"*/"
{printf("%d 行 ",lineno);
printf("%s special symbol\n",yytext);}//特殊符号
定义识别标识符规则
{id}
{printf("%d 行 ",lineno);
printf("%s ID\n",yytext);}//标识符
定义识别错误的字符串规则
当开头为数字的后面为字母的字符串时,是错误的标识符。
{error_id}
{printf("error:%s\n",yytext);}//以数字开头的字符自动报错
定义忽略空格规则
{whitespace}
{/* skip whitespace */}//忽略空格
定义忽略回车规则
{enter}
{lineno++;}//遇到回车自动加行号忽略
辅助程序集中包括
主函数main ()和辅助函数toupper()。
3. 程序代码实现
Lex代码
//定义集,包括头文件和变量定义
%{
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int lineno=1;//定义行号
%}
//定义正则表达式
letter [A-Za-z] //字母
digit [0-9] //数字
id ({letter}|[_])({letter}|{digit}|[_])* //开头为字母的标识符
error_id ({digit})+({letter})+ //开头为数字的错误标识符
num {digit}+ //数字集合
whitespace [ \t]+ //空格
enter [\n]+ //回车
//定义识别规则
%%
//识别保留字
"int"|"else"|"return"|"void"|"if"|"while"
{Upper(yytext,yyleng);
printf("%d 行 ",lineno); //打印行号
printf("%s reserved word\n",yytext);}//输出保留字
//识别数字
{num}
{printf("%d 行 ",lineno); //打印行号
printf("%s NUM\n",yytext);}//输出数字
//识别专用符号
","|";"|"("|")"|"{"|"}"|"*"|"/"|"+"|"-"|">"|"<"|">="|"<="|"=="|"!="|"="|"/*"|"*/"
{printf("%d 行 ",lineno); //打印行号
printf("%s special symbol\n",yytext);}//输出特殊符号
//识别标识符
{id}
{printf("%d 行 ",lineno);//打印行号
printf("%s ID\n",yytext);}//打印标识符
//识别错误的标识符
{error_id}
{ printf("%d 行 ",lineno);
printf("error: %s\n",yytext);}//以数字开头的字符自动报错
//识别空格
{whitespace}
{/* skip whitespace */}//忽略空格
//识别回车
{enter}
{lineno++;}//遇到回车自动加行号忽略
%%
//转换大小写
Upper(char *s,int l){
int i;
for(i=0;i<l;i++){
s[i]=toupper(s[i]);
}
}//将保留字变为大写
//主函数
main(void)
{
//定义输入文件名变量
char infilename[400];
printf("输入文件名:");
scanf("%s",&infilename);
yyin = fopen(infilename,"r");//读取文件
printf("开始词法分析: \n");
return yylex();
}
4. 测试结果
测试数据选择
测试的文件代码
测试结果分析
5. 总结
学会运用Lex自动构造词法分析器,学会了基于Parser Genarator的词法分析器构造方法。
lex语录篇三
编译原理 利用lex生成c语言的词法分析程序
《编译原理》课程
实验报告
题目 利用lex生成c语言的词法分析程序 专业 班级 学号
姓名
一. 实验题目
二. 实验日期
三. 实验环境(操作系统,开发语言)
操作系统是Windows
开发语言是C语言
四. 实验内容(实验要求)
利用flex,仿教材p227的pascal语言的词法分析程序,经过适当修改后,遵照教材p48-图4.1和p50-表4.1编写自己的类别码。
要求:
1.生成的词法分析程序要求能够对给定的任意c程序进行词法分析,并生成
文档输出。
2.词法分析程序能够识别关键字、运算符、分界符、标识符、常量(至少是整形常量,可以自己扩充识别其它常量)等,并能处理注释、部分复合运算符(如>=等)。
3.交 .l 文件,c源文件、输出分析结果文件及实验报告。
五. 实验步骤
(1)遵照教材p48-图4.1和p50-表4.1,自己编写自己的类别编码。
(2)仿教材p227,pascal语言的词法分析程序,经过适当的修改后输入记事本
中,保存格式为.l文件。
(3)在DOS环境下,利用flex运行.l文件,生成lex.yy.c文件。
(4)用c-free打开lex.yy.c文件,检查是否有错误并运行,生成lex.yy.exe
文件。
(5)可利用此程序运行任意的c程序进行词法分析。
六. 实验体会(包括收获、心得体会、存在的问题及解决问题的方法、建议等)
1.此次实验让我进一步熟悉了词法分析程序lex的运用,熟悉了模式的运用方法及其格式的运用。
2.要使词法分析程序能够识别c程序中任意的关键字、运算符、分界符、标识符、常量,必须对这五类单词符号非常熟悉,因此还需要加强巩固c语言这方面的知识。
七. 实验结果(关键源代码)
%option noyywrap
%{
#include<stdio.h>
int row = 1,col = 1;
%}
DIGIT[0-9]
ID[a-zA-Z][a-zA-Z0-9]*
%%
{DIGIT}+"."{DIGIT}* {
} printf("2 %s\n",yytext);col = col + yyleng;
{DIGIT}+ {
"/*"[^}\n]*"*/" col = col + yyleng;{lex语录}.
main printf("4 %s\n",yytext);col = col + yyleng; return printf("5 %s\n",yytext);col = col + yyleng; if printf("8 %s\n",yytext);col = col + yyleng; else printf("9 %s\n",yytext);col = col + yyleng; } printf("3 %s\n",yytext);col = col + yyleng; then printf("10 %s\n",yytext);col = col + yyleng; for printf("11 %s\n",yytext);col = col + yyleng; while printf("12 %s\n",yytext);col = col + yyleng; do printf("13 %s\n",yytext);col = col + yyleng; break printf("14 %s\n",yytext);col = col + yyleng; continue printf("15 %s\n",yytext);col = col + yyleng; switch printf("16 %s\n",yytext);col = col + yyleng; case printf("17 %s\n",yytext);col = col + yyleng; default printf("18 %s\n",yytext);col = col + yyleng; int printf("19 %s\n",yytext);col = col + yyleng; char printf("20 %s\n",yytext);col = col + yyleng; float printf("21 %s\n",yytext);col = col + yyleng; double printf("22 %s\n",yytext);col = col + yyleng; void printf("23 %s\n",yytext);col = col + yyleng; enum printf("24 %s\n",yytext);col = col + yyleng; struct printf("25 %s\n",yytext);col = col + yyleng;
union printf("26 %s\n",yytext);col = col + yyleng; long printf("27 %s\n",yytext);col = col + yyleng; short printf("28 %s\n",yytext);col = col + yyleng; signed printf("29 %s\n",yytext);col = col + yyleng; unsigned printf("30 %s\n",yytext);col = col + yyleng; static printf("31 %s\n",yytext);col = col + yyleng; const printf("32 %s\n",yytext);col = col + yyleng; typedef printf("33 %s\n",yytext);col = col + yyleng; printf printf("68 %s\n",yytext);col = col + yyleng; scanf printf("69 %s\n",yytext);col = col + yyleng; include printf("70 %s\n",yytext);col = col + yyleng; define printf("71 %s\n",yytext);col = col + yyleng;
"<"+{ID}+".h>" printf("72 %s\n",yytext);col = col + yyleng;
["]+{ID}+".h"+["] printf("73 %s\n",yytext);col = col + yyleng; "/*"([^\*]|(\*)*[^\*/])*"*/" col = col + yyleng;
{ID}
"%"
"+"
"-"
"*"
"/"
"("
")"
"["
"]"
"{" printf("34 %s\n",yytext);col = col + yyleng; printf("35 %s\n",yytext);col = col + yyleng; printf("36 %s\n",yytext);col = col + yyleng; printf("37 %s\n",yytext);col = col + yyleng; printf("38 %s\n",yytext);col = col + yyleng; printf("39 %s\n",yytext);col = col + yyleng; printf("40 %s\n",yytext);col = col + yyleng; printf("41 %s\n",yytext);col = col + yyleng; printf("42 %s\n",yytext);col = col + yyleng; printf("43 %s\n",yytext);col = col + yyleng; printf("1 %s\n",yytext);col = col + yyleng;
"}"
"->"
"!"
"++"
"--"
"<"
">"
"<<"
">>"
"<="
">="
"=="
"!="
"&&"
"||"
"^"
"="
"+="
"-="
"*="
"/="
"%="
","
";" printf("44 %s\n",yytext);col = col + yyleng; printf("45 %s\n",yytext);col = col + yyleng; printf("46 %s\n",yytext);col = col + yyleng; printf("47 %s\n",yytext);col = col + yyleng; printf("48 %s\n",yytext);col = col + yyleng; printf("51 %s\n",yytext);col = col + yyleng; printf("52 %s\n",yytext);col = col + yyleng; printf("49 %s\n",yytext);col = col + yyleng; printf("50 %s\n",yytext);col = col + yyleng; printf("53 %s\n",yytext);col = col + yyleng; printf("54 %s\n",yytext);col = col + yyleng; printf("55 %s\n",yytext);col = col + yyleng; printf("56 %s\n",yytext);col = col + yyleng; printf("57 %s\n",yytext);col = col + yyleng; printf("58 %s\n",yytext);col = col + yyleng; printf("59 %s\n",yytext);col = col + yyleng; printf("60 %s\n",yytext);col = col + yyleng; printf("61 %s\n",yytext);col = col + yyleng; printf("62 %s\n",yytext);col = col + yyleng; printf("63 %s\n",yytext);col = col + yyleng; printf("64 %s\n",yytext);col = col + yyleng; printf("65 %s\n",yytext);col = col + yyleng; printf("66 %s\n",yytext);col = col + yyleng; printf("67 %s\n",yytext);col = col + yyleng; "#" printf("74 %s\n",yytext);col = col + yyleng; "**" printf("75 %s\n",yytext);col = col + yyleng; " " printf("76 %s\n",yytext);col = col + yyleng; "'" printf("77 %s\n",yytext);col = col + yyleng; \t printf("78 %s\n",yytext);col = col + yyleng;
lex语录篇四
拉丁语名言警句
拉丁语名言警句
德语:
Der Ietzte Satz darf ewig nicht vergessen werden
一直无法忘记的是最后那句。
Schutz bitte die wichtigen Sachen im Herzen...
保护好心里重要的东西。
Ich weiβ,dass eingene Kraft keine bedeutende Rolle spielt.
知道了一个人的力量能如此渺小
Wenn ich mir nur selbst schützen kann...
那么我只要保护好自己即可{lex语录}.
Einzig und allein.
仅此而已。
---------------------------------------------------------------------
拉丁文:
A
A fronte praecipitium a tergo lupi
悬崖在面前,狼群在背后(即:“前无去路,后有追兵”)
A mari usque ad mare
从大海到大海(加拿大国家格言)
Absenti nemo non nocuisse velit
愿没有人会说不在场人的坏话
Absit omen
希望这不是凶兆
Abusus non tollit usum
滥用不排除好用(一个东西被滥用的可能性不影响其也可被派上用场) Actus non facit reum nisi mens est rea
非有意犯罪的行为不算犯罪行为(即:“无心之过不算犯罪”) Agnosco veteris vestigia flammae
我再度感到我曾经拥有的火焰
Aliquando bonus dormitat Homerus
有时候连好人荷马也会打瞌睡(意为:“虽圣贤亦难免有错”,即:“智者千虑必有一失”)
Altissima quaeque flumina minimo sono labi
河流越深,其水声越小(静水流深)
Amicus humani generis
全人类之友
Amicus Plato, sed magis amica veritas
我喜爱柏拉图,但我更爱真理(即“真理比权威更重要”) Amor est vitae essentia
爱是生命中的精粹
Annibal ad portas
汉尼拔到我们的城门来了!(用于吓唬小孩)
Ars est celare artem
有艺术而不露就是真艺术(即:“能鹰隐爪”)
Ars gratia artis
为艺术而艺术
Ars longa, vita brevis
艺术长,人生短(意为:“人生短促,艺术不朽”,或“人生有限而艺术无穷”)
Audentes fortuna iuvat
命运女神偏袒有胆量的人
Audi alteram partem
听取另一方的陈述(意为:“另一方的话也要听”)
C
Caelum non animum mutant qui trans mare currunt
那些渡海而走的人,只换天候而不改本性(意为:“走遍海角天涯,本性不改”)
Carpe diem
抓住今天(即:“及时行乐”)
Castigat ridendo mores
笑着整风(意为:“以笑谑的方式来移风易俗”,指警世喜剧) Cave canem
小心凶狗
Caveat emptor
购买人注意/购买人小心
Cogito ergo sum
我思故我在(法国哲学家笛卡儿所言)
D
De calcaria in carbonarium
从石灰炉掉进木炭炉(即:“刚出虎穴,又入狼窝”)
De gustibus non est disputandum
鉴赏力各有不同;人各有所好
De minimis non curat praetor
法官不问小事(意为:“大人物不管小事”)
Delphinum natare doces
你在教海豚游水
(即:“班门弄斧”)
Dulce et decorum est pro patria mori
为祖国而死是甜美和正确的事情
E
Errare humanum est
犯错是人类的本性(意为:“人皆有错”,即“人非圣贤,孰能无过”) Esto quo audes
做你敢做的人
Fas est et ab hoste doceri
从敌人也可以学习(即:“三人行,必有我师焉”)
F
lex语录篇五
拉丁语名言警句
拉丁语名言警句
德语:
Der Ietzte Satz darf ewig nicht vergessen werden
一直无法忘记的是最后那句。
Schutz bitte die wichtigen Sachen im Herzen...
保护好心里重要的东西。
Ich weiβ,dass eingene Kraft keine bedeutende Rolle spielt.
知道了一个人的力量能如此渺小
Wenn ich mir nur selbst schützen kann...
那么我只要保护好自己即可
Einzig und allein.
仅此而已。
---------------------------------------------------------------------
拉丁文:
A
A fronte praecipitium a tergo lupi
悬崖在面前,狼群在背后(即:“前无去路,后有追兵”)
A mari usque ad mare
从大海到大海(加拿大国家格言)
Absenti nemo non nocuisse velit
愿没有人会说不在场人的坏话
Absit omen
希望这不是凶兆
Abusus non tollit usum
滥用不排除好用(一个东西被滥用的可能性不影响其也可被派上用场) Actus non facit reum nisi mens est rea
非有意犯罪的行为不算犯罪行为(即:“无心之过不算犯罪”)
Agnosco veteris vestigia flammae
我再度感到我曾经拥有的火焰
Aliquando bonus dormitat Homerus
有时候连好人荷马也会打瞌睡(意为:“虽圣贤亦难免有错”,即:“智者千虑必有一失”) Altissima quaeque flumina minimo sono labi
河流越深,其水声越小(静水流深)
Amicus humani generis
全人类之友
Amicus Plato, sed magis amica veritas
我喜爱柏拉图,但我更爱真理(即“真理比权威更重要”)
Amor est vitae essentia
爱是生命中的精粹
Annibal ad portas
汉尼拔到我们的城门来了!(用于吓唬小孩)
Ars est celare artem
有艺术而不露就是真艺术(即:“能鹰隐爪”)
Ars gratia artis
为艺术而艺术
Ars longa, vita brevis
艺术长,人生短(意为:“人生短促,艺术不朽”,或“人生有限而艺术无穷”) Audentes fortuna iuvat
命运女神偏袒有胆量的人
Audi alteram partem
听取另一方的陈述(意为:“另一方的话也要听”)
C
Caelum non animum mutant qui trans mare currunt
那些渡海而走的人,只换天候而不改本性(意为:“走遍海角天涯,本性不改”) Carpe diem
抓住今天(即:“及时行乐”)
Castigat ridendo mores
笑着整风(意为:“以笑谑的方式来移风易俗”,指警世喜剧)
Cave canem
小心凶狗
Caveat emptor
购买人注意/购买人小心
Cogito ergo sum
我思故我在(法国哲学家笛卡儿所言)
D
De calcaria in carbonarium
从石灰炉掉进木炭炉(即:“刚出虎穴,又入狼窝”)
De gustibus non est disputandum
鉴赏力各有不同;人各有所好
De minimis non curat praetor{lex语录}.
法官不问小事(意为:“大人物不管小事”)
Delphinum natare doces{lex语录}.
你在教海豚游水
(即:“班门弄斧”)
Dulce et decorum est pro patria mori
为祖国而死是甜美和正确的事情
E
Errare humanum est
犯错是人类的本性(意为:“人皆有错”,即“人非圣贤,孰能无过”)
Esto quo audes
做你敢做的人
Fas est et ab hoste doceri
从敌人也可以学习(即:“三人行,必有我师焉”)
F
Finis coronat opus
结局是杰作的冠冕(即“画龙点睛”)
I
In libris libertas
书中自由(意为“书中可以找到自由)
In vino veritas
酒中真理(即:“酒后吐真言”)
Ipsa scientia potestas est
知识本身就是权力
J
Jus est ars boni et aequi
法律就是善良和正义的艺术(意为:“法律乃善良公平之道”){lex语录}.
L
Liber demum, Deo gratias sum liber demum
终于自由了,谢天谢地,我终于自由了
Liberavi animam meam
我的灵魂已被释放了
M
Manus manum lavat
左手洗右手(即:“如果你帮助我, 我也会帮助你的“)
Mater artium necessitas
需要乃是艺术之母(即:“需要乃是发明之母”)
Morituri te salutant
将要死亡的人们向你致敬(角斗士在进行拼死搏斗前向皇帝说的话)
Mors ultima ratio
死为最终天理
N
Nascentes morimur
我们一旦出生就开始死亡
Nec hostium timete, nec amicum reusate
不要怕敌人,也不要拒绝朋友
Necessitas non habet legem
需要之急,无法无天
Nemo me impune lacessit
谁也不可以欺我而不受惩罚
Nil desperandum
永远不要绝望
Nil posse creari de nilo
无中不可能生有
Non multa sed multum
宜少而精(直译:“不要多数,而要大量”)
Non omnis moriar
我不会全死(意为“因为我写过的书籍词语,不会被人们所忘,这样就像我永远留在人间,永远也不死)
Non sibi, sed omnibus
不为了自己,而为了所有人
Nosce te ipsum
认识你自己(即:“知己知彼,百战百胜”)
Nunc aut nunquam
及时或永不(“现在不做,白不做”)
O
Oculum pro oculo, et dentem pro dente
以眼还眼,以牙还牙
Omnia vincit amor
爱情战胜万物
Otium sine litteris mors est
空闲若无文学不如死
P
Pares cum paribus facillime congregantur
同类容易聚集在一起
Parvis e glandibus quercus
小孩从小橡实长成高橡树(“橡树再高也是橡实长出来”)
Praemonitus, praemunitus
被事先警告就如预先武装
Primum est non nocere
最重要是害人之心不可有
Pro bono publico
为公众利益
Q
Quem di diliqunt adolescens moritur
天爱的人夭逝
Qui non est hodie cras minus aptus erit
今天尚未准备者,明天更不会准备
Qui non profic
it deficit
不进步则退步
Qui tacet consentit
沉默则默认
Quis custodiet ipsos custode
s?
谁看管那些看管者?(意为:“谁来监督守门人?”,或“监护人又由谁来监护?”)
R
Rem tene; verba sequentur
把握题目,话语自然从之
Requiescat in pace
愿彼安息(坟墓上使用)
S
Salus populi suprema lex
人民的利益是最高法律
Scientia lumen vitae
知识是人生的光明
Si vis pacem, para bellum
如果你想要和平,先备战
Sic transit gloria mundi
世间的荣耀就此消失/今生的荣耀就这样消逝了/世间富贵,瞬息即逝
Suum cuique
各得其所应得
T
lex语录篇六
编译原理课程设计
编译原理课程设计报告