Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
LEX与YACC项目模板3
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
CP Lab Group
任务模板的模板
LEX与YACC项目模板3
提交
6c573452
提交
6c573452
3月 19, 2020
创建
作者:
赵鹏翀
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add input file to project file
上级
d412a5d3
流水线
#36992
已失败 于阶段
用时 23 秒
变更
7
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
109 行增加
和
25 行删除
+109
-25
.gitlab-ci.yml
.gitlab-ci.yml
+68
-0
input2.txt
input2.txt
+2
-0
input3.txt
input3.txt
+2
-0
lex_yacc.cplproj
lex_yacc.cplproj
+8
-0
output2.txt
output2.txt
+2
-0
output3.txt
output3.txt
+2
-0
readme.md
readme.md
+25
-25
没有找到文件。
.gitlab-ci.yml
浏览文件 @
6c573452
...
...
@@ -2,6 +2,8 @@ image: "registry.cn-hangzhou.aliyuncs.com/engintime/ubuntu_16.04_program:latest"
stages
:
-
make
-
case1
-
case2
-
case3
before_script
:
-
flex -b -oyylex.c lex.txt
...
...
@@ -29,7 +31,72 @@ case1:
script
:
-
./app input1.txt > user_output1.txt
-
diff output1.txt user_output1.txt -b -B -y -i -W 100
-
execscore.sh 80
only
:
-
master
teacher-check1
:
stage
:
case1
<<
:
*codecode-runner
script
:
-
./app input1.txt > /dev/null
-
git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
-
diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
-
diff template/input1.txt input1.txt -b -B -y -i --suppress-common-lines
-
diff template/output1.txt output1.txt -b -B -y -i --suppress-common-lines
-
fileidentity.sh
only
:
-
master
when
:
manual
allow_failure
:
true
case2
:
stage
:
case2
<<
:
*codecode-runner
script
:
-
./app input2.txt > user_output2.txt
-
diff output2.txt user_output2.txt -b -B -y -i -W 100
-
execscore.sh 90
only
:
-
master
teacher-check2
:
stage
:
case2
<<
:
*codecode-runner
script
:
-
./app input2.txt > /dev/null
-
git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
-
diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
-
diff template/input2.txt input2.txt -b -B -y -i --suppress-common-lines
-
diff template/output2.txt output2.txt -b -B -y -i --suppress-common-lines
-
fileidentity.sh
only
:
-
master
when
:
manual
allow_failure
:
true
case3
:
stage
:
case3
<<
:
*codecode-runner
script
:
-
./app input3.txt > user_output3.txt
-
diff output3.txt user_output3.txt -b -B -y -i -W 100
-
execscore.sh 100
only
:
-
master
teacher-check3
:
stage
:
case3
<<
:
*codecode-runner
script
:
-
./app input3.txt > /dev/null
-
git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
-
diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
-
diff template/input3.txt input3.txt -b -B -y -i --suppress-common-lines
-
diff template/output3.txt output3.txt -b -B -y -i --suppress-common-lines
-
fileidentity.sh
only
:
-
master
when
:
manual
allow_failure
:
true
\ No newline at end of file
input2.txt
0 → 100644
浏览文件 @
6c573452
3 * 5
\ No newline at end of file
input3.txt
0 → 100644
浏览文件 @
6c573452
3 * 5
\ No newline at end of file
lex_yacc.cplproj
浏览文件 @
6c573452
...
...
@@ -62,8 +62,16 @@
</Filter>
<File
RelativePath=
".\input1.txt"
>
</File>
<File
RelativePath=
".\input2.txt"
>
</File>
<File
RelativePath=
".\input3.txt"
>
</File>
<File
RelativePath=
".\output1.txt"
>
</File>
<File
RelativePath=
".\output2.txt"
>
</File>
<File
RelativePath=
".\output3.txt"
>
</File>
<File
RelativePath=
".\readme.md"
>
</File>
</Files>
...
...
output2.txt
0 → 100644
浏览文件 @
6c573452
15
\ No newline at end of file
output3.txt
0 → 100644
浏览文件 @
6c573452
15
\ No newline at end of file
readme.md
浏览文件 @
6c573452
# 功能说明
此模板的功能是lex(Flex的Lex兼容模式)和yacc(Bison的yacc兼容模式)联合使用,用于创建从文件中读取数据,然后将结果输出到标准输出的任务模板。包含有
1个case。
# 生成过程说明
flex.exe 使用lex.txt作为输入文件,生成了yylex.c
bison.exe 使用yacc.txt作为输入文件,生成了ytab.h和ytab.c
使用gcc 对main.h、ytab.h、ytab.c、yylex.c进行编译链接,生成了可执行程序。
使用CP Lab运行时,默认使用 sample.txt 文件作为命令行中的第一个参数,也就是从该文件读取内容,将处理结果打印到标准输出。
运行线上流水线时,使用 input1
.txt 文件作为命令行中的第一个参数,并将标准输出重定向到 user_output1.txt 文件中,最后与答案文件 output1.txt 比较。
# 使用方法
为学生布置任务前,要先使用此模板创建一个任务模板。方法如下:
1.
在自己的群组中新建一个项目,新建项目时,不要创建空白项目,选择右侧的“导入项目”,然后选择“Repo by URL”作为导入源。将本项目的Git URL复制到“Git仓库URL”中。其他的控件按照自己的要求填入后,点击最下方的“创建项目”按钮,完成新建项目。这个新建的项目会用于给学生创建任务。
2.
使用教师账号登录 CP Lab,将新建的项目克隆到本地。
3.
编辑 input1
.txt 文件和 output1.txt 文件以及 sample.txt 文件。写入实验要求的内容。
4.
编辑 readme.md 文件的内容,通常在此文件中写明实验的要求,让学生依据要求完成实验。推荐将读取文件的样例和输出样例写入 readme.md 文件中方便学生查看。
5.
如果有必要,也可以修改已有的文件,提供一个合适的代码基。或者在项目中加入其它的头文件和C文件。方法是在CP Lab左侧的项目管理器中对应的节点上点击鼠标右键,在弹出的菜单中选择“添加”中的“添加新文件”。
6.
推送项目到 Git 远程库。
7.
如果有答案源代码的话,最好能做一个测试,确保学生能够顺利完成实验。方法是:新建一个课程,使用刚刚制作的模板项目新建一个任务,将学生添加到课程中,发布课程和任务后,使用学生账号领取任务,然后使用学生账号登录 CP Lab,克隆任务的项目,将源代码答案填入 lex.txt 和 yacc.txt 文件后提交作业。如果线上的流水线成功,并得到了100分。说明模板制作成功了。否则需要按照上面的步骤继续修改模板。
# 注意
1.
使用此模板制作的任务模板不提供在 CP Lab 中的图形化功能和验证功能。只能通过线上的流水线进行验证。
2.
不要通过浏览器直接编辑C源代码文件,可能会出现乱码的情况。
# 功能说明
此模板的功能是lex(Flex的Lex兼容模式)和yacc(Bison的yacc兼容模式)联合使用,用于创建从文件中读取数据,然后将结果输出到标准输出的任务模板。包含有
3个case。
# 生成过程说明
flex.exe 使用lex.txt作为输入文件,生成了yylex.c
bison.exe 使用yacc.txt作为输入文件,生成了ytab.h和ytab.c
使用gcc 对main.h、ytab.h、ytab.c、yylex.c进行编译链接,生成了可执行程序。
使用CP Lab运行时,默认使用 sample.txt 文件作为命令行中的第一个参数,也就是从该文件读取内容,将处理结果打印到标准输出。
运行线上流水线时,使用 input1
-3.txt 文件作为命令行中的第一个参数,并将标准输出重定向到 user_output1-3.txt 文件中,最后与答案文件 output1-3.txt 比较。
# 使用方法
为学生布置任务前,要先使用此模板创建一个任务模板。方法如下:
1.
在自己的群组中新建一个项目,新建项目时,不要创建空白项目,选择右侧的“导入项目”,然后选择“Repo by URL”作为导入源。将本项目的Git URL复制到“Git仓库URL”中。其他的控件按照自己的要求填入后,点击最下方的“创建项目”按钮,完成新建项目。这个新建的项目会用于给学生创建任务。
2.
使用教师账号登录 CP Lab,将新建的项目克隆到本地。
3.
编辑 input1
-3.txt 文件和 output1-3.txt 文件以及 sample.txt 文件。写入实验要求的内容。
4.
编辑 readme.md 文件的内容,通常在此文件中写明实验的要求,让学生依据要求完成实验。推荐将读取文件的样例和输出样例写入 readme.md 文件中方便学生查看。
5.
如果有必要,也可以修改已有的文件,提供一个合适的代码基。或者在项目中加入其它的头文件和C文件。方法是在CP Lab左侧的项目管理器中对应的节点上点击鼠标右键,在弹出的菜单中选择“添加”中的“添加新文件”。
6.
推送项目到 Git 远程库。
7.
如果有答案源代码的话,最好能做一个测试,确保学生能够顺利完成实验。方法是:新建一个课程,使用刚刚制作的模板项目新建一个任务,将学生添加到课程中,发布课程和任务后,使用学生账号领取任务,然后使用学生账号登录 CP Lab,克隆任务的项目,将源代码答案填入 lex.txt 和 yacc.txt 文件后提交作业。如果线上的流水线成功,并得到了100分。说明模板制作成功了。否则需要按照上面的步骤继续修改模板。
# 注意
1.
使用此模板制作的任务模板不提供在 CP Lab 中的图形化功能和验证功能。只能通过线上的流水线进行验证。
2.
不要通过浏览器直接编辑C源代码文件,可能会出现乱码的情况。
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论