<commit_before>﻿
---
layout:     post
title:      "高级语言及其文法实验"
subtitle:   "文法（Grammar）是描述高级语言语法结构的重要工具。定义任意的文法 G， 需要完成对其四元组（V,T,P,S）的定义。在该实验中，请制定文法 文件的具体组织形式、编程完成对文法文件的读取、并完成对文法的分类。任务一：文法的定义及读取
现规定文法由 Grammar.txt 文件保存，请制定文法文件的具体存储格式。如
文法 G={{A,B,C}, {a,b,c}, {S->ABC,A->a,B->b,C->c}, S}在 Grammar.txt 文件中 可由以下方式描述并存储：
--------------------------------------------------
A,B,C
a,b,c
S->ABC,A->a,B->b,C->c
S
--------------------------------------------------
 文法的文本形式可根据自己需要自由定义，在此基础上，编程实现对任意文 法文件的读取。任务二：文法的分类
根据 Chomsky 的文法体系分类，文法分为四大种类。请在任务
一的基础上，编程实现对 Grammar.txt 中存储的文法进行分类，自动判断其所属 类别。例如任务一中所给出的文法 G 应被判定为 2 型文法，即上下文无关文法。 请设计分类方法，并设计四类不同的测试文法测试分类结果的正确性。"

date:       2017-3-19  
author:     "Wengdada"
header-img: "http://img2.imgtn.bdimg.com/it/u=1685228515,1024311283&fm=15&gp=0.jpg"
catalog: true
tags:
    - 编译原理
    - 实验
    
---

> 不说那么多，先贴图，先看实验最终效果.
> 

**wrongForm.txt**中的内容：
>*a,B,C;a,B,c;AA->a,z->ZZ,B->c,C->abcA;S*

![](http://wengdada.tech/img/compiler_principles_and_techniques_homework1_1.png)

**1.txt**中的内容：
>*A,B,C;a,b,c;S->a,aA->bB,B->c,C->abcA;S*

![](http://wengdada.tech/img/compiler_principles_and_techniques_homework1_2.png)

[实验相关文件](https://github.com/GitHub-Weng/GitHub-Weng.github.io/blob/master/file/Experiment1_Advanced_Language_and_Grammar.pdf)<commit_msg>grammar<commit_after>﻿
---
layout:     post
title:      "高级语言及其文法实验"
subtitle:   "文法（Grammar）是描述高级语言语法结构的重要工具。定义任意的文法 G， 需要完成对其四元组（V,T,P,S）的定义。在该实验中，请制定文法 文件的具体组织形式、编程完成对文法文件的读取、并完成对文法的分类。"

date:       2017-3-19  
author:     "Wengdada"
header-img: "http://img2.imgtn.bdimg.com/it/u=1685228515,1024311283&fm=15&gp=0.jpg"
catalog: true
tags:
    - 编译原理
    - 实验
    
---

>任务一：文法的定义及读取
现规定文法由 Grammar.txt 文件保存，请制定文法文件的具体存储格式。如
文法 G={{A,B,C}, {a,b,c}, {S->ABC,A->a,B->b,C->c}, S}在 Grammar.txt 文件中 可由以下方式描述并存储：
--------------------------------------------------
>A,B,C
a,b,c
S->ABC,A->a,B->b,C->c
S
--------------------------------------------------
> 文法的文本形式可根据自己需要自由定义，在此基础上，编程实现对任意文 法文件的读取。任务二：文法的分类
根据 Chomsky 的文法体系分类，文法分为四大种类。请在任务
一的基础上，编程实现对 Grammar.txt 中存储的文法进行分类，自动判断其所属 类别。例如任务一中所给出的文法 G 应被判定为 2 型文法，即上下文无关文法。 请设计分类方法，并设计四类不同的测试文法测试分类结果的正确性。

> 不说那么多，先贴图，先看实验最终效果.
> 

**wrongForm.txt**中的内容：
>*a,B,C;a,B,c;AA->a,z->ZZ,B->c,C->abcA;S*

![](http://wengdada.tech/img/compiler_principles_and_techniques_homework1_1.png)

**1.txt**中的内容：
>*A,B,C;a,b,c;S->a,aA->bB,B->c,C->abcA;S*

![](http://wengdada.tech/img/compiler_principles_and_techniques_homework1_2.png)

[实验相关文件](https://github.com/GitHub-Weng/GitHub-Weng.github.io/blob/master/file/Experiment1_Advanced_Language_and_Grammar.pdf)
{'fraction_non_alphanumeric': 0.2524234199302055, 'fraction_numerical': 0.029468786351298952, 'mean_word_length': 3.631956912028725, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 46, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1205069', 'n_tokens_mistral': 1651, 'n_tokens_neox': 1699, 'n_words': 116}