语法分析
句子成分与语法分析

句子成分与语法分析句子是语言中最基本的单位,是表达完整意义的语言构成部分。
而句子成分则是组成句子的各个部分,包括主语、谓语、宾语、状语等。
语法分析则是对句子进行结构分析和语法规则的应用,以达到理解和解释句子的目的。
本文将探讨句子成分与语法分析的相关内容。
一、句子成分句子成分是指组成句子的各个基本要素,它们在句子中扮演不同的角色,起到不同的作用。
常见的句子成分包括以下几种:1. 主语:主语是句子中的核心成分,它通常表示句子的主体或做出动作的人或物。
主语可以是名词、代词或从句等。
例如:“小明看了电影。
”中的“小明”就是主语。
2. 谓语:谓语是句子中的核心成分,它表示主语所做的动作或存在的状态。
谓语一般是动词,例如:“小明看了电影。
”中的“看了”就是谓语。
3. 宾语:宾语是谓语动作的对象,它常常回答“谁”或“什么”的问题。
宾语可以是名词、代词或从句等。
例如:“小明看了电影。
”中的“电影”就是宾语。
4. 状语:状语是对动作或状态进行补充说明的成分,它可以修饰动词、形容词、副词等。
状语通常回答“怎么样”、“在什么地方”、“为什么”等问题。
例如:“小明昨天在电影院看了电影。
”中的“昨天”和“在电影院”就是状语。
5. 补语:补语是对句子中的其他成分进行补充说明的成分,用以补充或限制主语或宾语的意义。
补语通常可以是名词、形容词、代词、动词不定式等。
例如:“小明是医生。
”中的“医生”就是补语。
二、语法分析语法分析是对句子进行结构分析和语法规则的应用,以便更好地理解和解释句子的意义。
语法分析可以分为句子成分分析和句子结构分析两个层面。
1. 句子成分分析句子成分分析是对句子中的各个成分进行识别和分析。
通过句子成分分析,可以准确地找出主语、谓语、宾语、状语等成分,并理解它们之间的关系和作用。
这有助于更好地理解句子的意思,从而更准确地理解作者的意图。
2. 句子结构分析句子结构分析是对句子的组织结构进行分析。
通过句子结构分析,可以了解句子的层次结构、成分之间的关系和句子的类型。
语法法分析实验报告

一、实验目的1. 理解语法分析的基本概念和原理。
2. 掌握语法分析器的构建方法。
3. 培养实际操作能力,提高编程水平。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 语法分析概述2. 词法分析3. 语法分析4. 实验实现四、实验步骤1. 语法分析概述(1)了解语法分析的定义、作用和意义。
(2)掌握语法分析的基本原理和流程。
2. 词法分析(1)编写词法分析器代码,将源代码分解成单词序列。
(2)实现词法分析器的各个功能,如:识别标识符、关键字、运算符等。
3. 语法分析(1)设计语法分析器,将单词序列转换为抽象语法树(AST)。
(2)实现语法分析器的各个功能,如:识别表达式、语句、函数等。
4. 实验实现(1)创建Python项目,导入相关库。
(2)编写词法分析器代码,实现单词序列的分解。
(3)编写语法分析器代码,实现抽象语法树的构建。
(4)测试语法分析器,验证其正确性。
五、实验结果与分析1. 词法分析结果实验中,我们成功地将源代码分解成单词序列,包括标识符、关键字、运算符等。
词法分析器的输出结果如下:```identifier: akeyword: intoperator: +identifier: boperator: =integer: 5```2. 语法分析结果通过语法分析器,我们将单词序列转换成抽象语法树。
以下是一个示例的抽象语法树:```Program├── Declaration│ ├── Type│ │ ├── Identifier│ │ └── Integer│ └── Identifier│ └── a└── Statement├── Expression│ ├── Identifier│ └── a└── Operator└── =└── Expression├── Identifier└── b└── Integer└── 5```从实验结果可以看出,我们的语法分析器能够正确地将源代码转换为抽象语法树。
现代汉语语法的五种分析方法

现代汉语语法的五种分析方法一、词法分析方法词法分析方法主要研究汉语中各种词类的构成、意义和用法,以及单词的形态变化规律。
它通过对词类、构词法、词义、词型变化规律等的研究,分析单词的构造和使用规律,从而理解句子的结构和语言表达的方式。
词法分析方法是语法研究最基本的方法,是其他语法方法的基础。
二、句法分析方法句法分析方法主要研究汉语中句子的构成、句子成分的排列顺序、句子结构的范式以及句子在语言中的功能等问题。
通过句法分析可以揭示句子的各个成分之间的关系,以及句子的内部结构和语序的规律。
句法分析方法主要包括短语结构语法分析和依存句法分析两种。
三、语义分析方法语义分析方法主要研究汉语中的词义、句义以及上下文对语义的影响等问题。
通过对词汇的义项、义体系的分类和构建、句子的义理解析等研究,揭示语言表达中的含义和信息传递方式。
语义分析方法可以帮助理解句子的意义和人们在交流中的意图。
四、语用分析方法语用分析方法主要研究汉语中语言行为和交际行为的规律,包括语言行为的目的、意图、社会因素对语言行为的影响,以及话语之间的关系和交际规则等。
通过语用分析可以了解句子的使用背景、语言行为的目的以及说话人的意图等,从而准确地理解和使用语言。
五、文体分析方法文体分析方法主要研究汉语的不同文体在语法和语言表达上的差异和特点。
它通过对文体的特征、结构和语言风格等的研究,揭示不同文体的特点和使用规律。
文体分析方法可以帮助我们理解不同文体的表达方式,从而提高我们在不同场合中的语言运用能力。
总之,这五种分析方法可以相互协作,可以全面地揭示汉语语法的各个方面,帮助我们更好地理解和使用汉语。
句法结构与语法分析

句法结构与语法分析句法结构与语法分析是语言学中重要的研究领域,涉及到对句子结构和语法规则的分析和研究。
通过句法结构和语法分析,我们可以深入理解语言的组织机制和语法规则,从而更好地理解和应用语言。
一、句法结构的定义与类型句法结构指的是语句或句子中词语相互关系的组织方式。
它描述了词语之间的依存关系和句子中的层次结构。
通常,句法结构可以分为两种类型:成分结构和依存结构。
成分结构是指词语按照一定的规则组成短语或分句,并且这些短语或分句间存在一定的层次关系。
例如,英语中的主语、谓语和宾语构成了一个句子的基本成分结构。
依存结构则是指一个词与句子中其他词之间的依存关系。
这种关系可以用依存树来表示,依存树中的节点代表词语,边表示词语之间的依存关系。
依存结构的分析可以更清晰地反映词语之间的依存关系,不同于传统的成分结构分析。
二、语法分析的方法与技术语法分析是指通过一定的方法和技术对给定的句子进行语法结构的判断和分析。
常见的语法分析方法包括基于规则的语法分析和基于统计的语法分析。
基于规则的语法分析是指利用事先定义好的语法规则对句子进行分析和判断。
这种方法需要依赖于语法规则的正确性和完备性,可以通过人工编写语法规则或者借助现有的语法规则库进行实现。
常见的基于规则的语法分析方法包括上下文无关文法(CFG)分析和依存文法分析。
基于统计的语法分析则是通过对大量语料库进行训练和学习,得到词语之间的搭配和概率分布,从而对句子的语法结构进行分析。
这种方法可以通过机器学习算法,如隐马尔科夫模型(HMM)、最大熵模型(MaxEnt)和条件随机场(CRF)等来实现。
三、句法结构与语法分析的应用句法结构和语法分析在自然语言处理、机器翻译、信息检索和人工智能等领域有着广泛的应用。
在自然语言处理领域,句法结构和语法分析可以用于词性标注、句子分割、命名实体识别、句子生成等任务中,从而提高文本处理的效果和准确性。
在机器翻译中,句法结构和语法分析可以用于对源语言句子和目标语言句子进行结构对齐和转换,从而提高机器翻译的质量和可理解性。
语法分析

if(Yi∈VN) { if(i=n or 任一j(i+1≤j≤n)null(Yj)=true) FOLLOW(Yi)=FOLLOW(Yi)∪FOLLOW(A); if(Yi+1∈VT) Yi+1∈FOLLOW(Yi); else for(k=i+1;k<=n;k++) if(k=i+1 or i+1≤j≤k-1)null(Yj)=true ) FOLLOW(Yi)=FOLLOW(Yi)∪FIRST(Yk) }/*end of if*/ }/*end of for*/ } /*end of for*/ while FIRST,FOLLOW,nullable 不再改变
1、思路:对任一输入符号串,通过一切可能的办 法,从树根结点(识别符号)出发,根据文法自 上而下地为输入串建立一棵语法树;或者说, 从识别符号开始,根据文法试图为输入串建立 一个推导序列。 2、特点:是自顶向下分析的一般方法,分析过程 的本质是一种试探过程。
4
例∶假定有文法G[S]:(1)S->cAd (2)A->ab|a 对输入串w=cad。要求自上而下地构造w的语法树。 解决过程: S c a S c A a d A b d -对于输入串w,从文法的开始符号出 发,反复使用不同的产生式谋求匹配 输入串。当用某个非终结符号的候选 式进行匹配失败时,则推翻分析退回 到适当位置再重新试探其它候选式, 直到把所有可能的推导序列都试探完 仍不成功才能确认输入串不是该文法 的句子而报错 。称为带回溯的自顶 向下分析。 -回溯需要推导记住现场,浪费了大量 的时间和空间,必须设法消除。
在推导过程中,可以完全根据向前看符号唯 一决定选择哪个产生式往下推导,因此,分析过 程是完全确定的。这种分析称为确定的自顶向下 分析方法。
语法分析对句子理解的重要性

语法分析对句子理解的重要性语法是语言的基本结构规则,它决定了句子是否符合语法规范。
语法分析是自然语言处理领域中一项关键技术,通过分析句子的语法结构,帮助计算机准确理解句子的含义。
本文将探讨语法分析在句子理解中的重要性。
一、语法分析的定义和作用语法分析,又称为句法分析,是自然语言处理中一种针对语法结构的分析过程。
它通过构建句子的语法树,确定句子中各个单词之间的关系,进而实现句子的理解和表示。
语法分析的主要作用在于:1. 确定句子的结构:通过语法分析,可以确定句子的组成部分,将句子分割成各种短语、词汇等,从而帮助我们理解句子的组织和结构。
2. 识别句子的要素:语法分析可以帮助我们准确定位句子中的主语、谓语、宾语等要素,从而更好地理解句子的意思和句子所表达的信息。
3. 解决歧义:语法分析可以帮助我们消除句子中的歧义,确定句子中的短语、成分之间的真实关系,从而准确理解句子的含义。
二、语法分析的方法目前,自然语言处理中常用的语法分析方法有两种:基于规则的语法分析和基于统计的语法分析。
1. 基于规则的语法分析:该方法是通过构建一系列的语法规则来分析句子的语法结构。
这些规则包括词法规则和句法规则,可以通过人工编写,也可以自动生成。
规则的构建需要基于语言学知识和语法规范,因此需要专业人士进行。
2. 基于统计的语法分析:该方法是通过大量的语料库训练得到语法模型,从而分析句子的语法结构。
这种方法不需要人工编写语法规则,而是通过统计句子中各个单词之间的搭配概率来进行分析,因此可以处理更加复杂的语法结构。
三、语法分析在句子理解中的重要性语法分析在句子理解中起着至关重要的作用。
它可以帮助计算机准确解析句子的语法结构,从而更好地理解句子的含义和信息。
1. 提高句子理解准确性:语法分析可以帮助我们识别句子中各个成分之间的关系,包括主谓关系、动宾关系等,从而准确理解句子的含义。
通过语法分析,计算机可以更加准确地理解句子的结构和语法规律,从而提高句子理解的准确性。
句子语法分析
句子语法分析语法分析是自然语言处理中的一个重要环节,通过对句子的结构和语法规则进行分析,可以帮助我们理解句子的语义和意图。
句子的语法结构牵涉到词汇、短语和句子之间的关系,下面将介绍常见的句子语法分析方法。
一、基于规则的语法分析方法基于规则的语法分析方法是最早也是最经典的方法之一。
它使用一组语法规则和转换规则来对句子进行分析。
其中,语法规则描述了句子中不同部分的语法关系和格式要求,而转换规则则指定如何将一个句子转换为另一个句子。
常见的基于规则的语法分析方法有自顶向下分析和自底向上分析。
1. 自顶向下分析自顶向下分析又称为预测分析,是从句子的最高层次开始逐步向下分析的过程。
它从句子的起始符号开始,根据语法规则一步一步地向下进行推导,直到得到具体的句子结构。
自顶向下分析的优点是简单易懂,但由于其自上而下的分析方式,可能会造成冗余的分析和回溯,导致效率低下。
2. 自底向上分析自底向上分析又称为移进规约分析,是从句子的底层开始逐步向上分析的过程。
它从句子的词汇项开始,不断将相邻的词汇项合并为更大的短语,直到最终得到整个句子的结构。
自底向上分析的优点是能够更好地处理复杂的语法结构,但也存在分析歧义性和效率低下的问题。
二、基于统计的语法分析方法基于统计的语法分析方法是近年来受到广泛应用的方法之一。
它利用大规模的语料库数据进行训练,通过统计分析句子中词汇和短语的共现关系,来预测句子的语法结构。
常见的基于统计的语法分析方法有基于PCFG(Probabilistic Context-Free Grammar)的方法和基于依存关系的方法。
1. 基于PCFG的方法基于PCFG的方法是一种基于上下文无关文法的句法分析方法。
它通过对语法规则和转换规则进行统计建模,来计算句子中各个语法成分的概率分布。
然后,利用维特比算法或者基于图的算法来寻找最可能的句子结构。
2. 基于依存关系的方法基于依存关系的方法是一种基于句子中单词之间依存关系的句法分析方法。
现代汉语语法分析
现代汉语语法分析现代汉语语法分析是对现代汉语语法结构、句法规则以及句子的语义关系进行系统研究和分析的学科。
语法分析是语言学研究的重要组成部分,它不仅有助于理解和解释语法现象,还能为语言教学、翻译等提供理论支持。
本文将从句子的结构、短语的构成和句法关系等几个方面对现代汉语的语法进行分析。
首先,我们来看句子结构的分析。
现代汉语的句子结构一般由主语、谓语和宾语构成。
主语通常位于谓语的前面,表示动作的执行者或状态的承受者。
谓语是句子的核心,通常表示动作或状态。
宾语则表示动作的承受者或影响对象。
句子还可以包含状语、补语和定语等成分,它们用来修饰主语、谓语和宾语等。
通过对句子结构的分析,我们可以更好地理解句子的意义和表达方式。
其次,我们来看短语的构成。
短语是句子的组成部分,由一个或多个词构成,表达特定的意义。
现代汉语的短语有名词短语、动词短语、形容词短语、副词短语等。
名词短语通常由一个名词和其修饰语构成,可以作为句子的主语、宾语等。
动词短语由动词和其修饰语构成,可以表示动作的性质、方式等。
形容词短语由形容词和其修饰语构成,通常用来修饰名词。
副词短语由副词和其修饰语构成,通常用来修饰动词或形容词。
通过对短语的构成和功能的分析,我们可以更好地理解句子的意义和语法结构。
最后,我们来看句法关系的分析。
句法关系是指句子中不同成分之间的关系。
现代汉语的句法关系主要有主谓关系、动宾关系、定状关系等。
主谓关系是指主语和谓语之间的关系,主语是谓语的承受者或执行者。
动宾关系是指动词和宾语之间的关系,动词表示动作,宾语表示动作的承受者或影响对象。
定状关系是指状语和其修饰语之间的关系,状语用来修饰动词或形容词,表示动作的方式、性质等。
通过对句法关系的分析,我们可以更好地理解句子的结构和意义。
总之,现代汉语语法分析是对现代汉语语法结构、句法规则以及句子的语义关系进行系统研究和分析的学科。
通过对句子的结构、短语的构成和句法关系等方面的分析,我们可以更好地理解和解释语法现象,为语言教学、翻译等提供理论支持。
词语的语法分析
词语的语法分析在语言学中,词语是构成语言的基本单位,通过词语的组合形成句子和表达意义。
在语法学中,对词语进行分析可以帮助我们理解其在句子中的作用和功能。
本文将从形态学和句法学两个层面,对词语的语法分析进行探讨。
一、形态学分析形态学是研究词语内部构造和变化的学科。
通过形态学分析,我们可以了解词语的词性、屈折变化和派生关系等。
一般而言,根据词性的不同,词语可以分为名词、动词、形容词、副词、介词、连词和感叹词等。
名词用于表示人、事物、抽象概念等;动词用于表示动作或状态;形容词用于修饰名词;副词用于修饰动词、形容词或其他副词;介词用于表示位置、方向、时间等关系;连词用于连接句子或短语;感叹词用于表达感情或强调。
在名词的形态学分析中,我们需要考虑单数与复数、所有格、性别和名词的派生等。
动词的形态学分析包括时态、语态、人称和数的变化等。
形容词和副词的形态学分析主要涉及原级、比较级和最高级等形式的变化。
介词和连词一般不发生形态上的变化。
二、句法学分析句法学是研究词语在句子中的功能和关系的学科。
通过句法学分析,我们可以了解词语在句子中扮演的角色,如主语、宾语、定语、状语等,以及不同词语之间的关系。
1. 主语:在英语中,主语一般位于谓语动词之前,说明句子的主体是谁或者是什么。
例如:- The cat is sleeping.(猫正在睡觉。
)在这个句子中,词语 "The cat" 就是主语,说明了正在进行动作的主体是猫。
2. 宾语:宾语是指动作的承受者或受益者。
在英语中,宾语一般位于谓语动词之后。
例如:- I bought a book.(我买了一本书。
)这里的词语 "a book" 是宾语,说明了动作 "bought" 的对象是书。
3. 定语:定语是用来修饰名词或代词的词语,可以从句法作用上分为前置定语和后置定语。
例如:- The red car is mine.(那辆红色的车是我的。
现代汉语语法分析的五种方法
现代汉语语法分析的五种方法1.依存句法分析法依存句法分析法是一种基于句子中词与词之间依存关系的语法分析方法。
它关注句子中词与词之间的依存关系,即词语之间的修饰、补充和关联关系。
依存句法分析法通过构建依存关系树来描述句子的结构。
这种方法能够较好地解释句子的语义和句法关系。
2.短语结构句法分析法短语结构句法分析法是一种基于短语结构的语法分析方法。
它关注句子中的短语结构,即短语的组合和层次结构。
短语结构句法分析法通过构建短语结构树来描述句子的结构。
这种方法能够较好地解释句子的组合和层次结构。
3.范畴语法分析法范畴语法分析法是一种基于范畴的语法分析方法。
它将句子中的词语和短语分为不同的范畴,并通过规则来描述它们之间的关系。
范畴语法分析法通过构建范畴语法树来描述句子的结构。
这种方法能够较好地解释句子的范畴和语义关系。
4.统计语法分析法统计语法分析法是一种基于统计模型的语法分析方法。
它通过对大量语料库进行统计分析来学习语法规则和句子结构。
统计语法分析法可以使用各种机器学习算法,如隐马尔可夫模型、条件随机场等。
这种方法能够较好地解释句子的概率和结构。
5.语义角色标注法语义角色标注法是一种基于语义角色的语法分析方法。
它关注句子中的谓词和与之相关的论元之间的语义角色关系。
语义角色标注法通过标注谓词和论元之间的关系来描述句子的结构。
这种方法能够较好地解释句子的语义角色和语义关系。
以上是现代汉语语法分析的五种常用方法。
每种方法都有其独特的优势和适用范围,可以根据具体需求选择合适的方法进行语法分析。
随着自然语言处理技术的不断发展,语法分析方法也在不断演进和完善。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。
二、实验要求利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
2.1 待分析的简单语言的语法用扩充的BNF表示如下:⑴<程序>::=begin<语句串>end⑵<语句串>::=<语句>{;<语句>}⑶<语句>::=<赋值语句>⑷<赋值语句>::=ID:=<表达式>⑸<表达式>::=<项>{+<项> | -<项>}⑹<项>::=<因子>{*<因子> | /<因子>⑺<因子>::=ID | NUM | (<表达式>)2.2 实验要求说明输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。
例如:输入begin a:=9; x:=2*3; b:=a+x end #输出success输入x:=a+b*c end #输出error2.3 语法分析程序的酸法思想⑴主程序示意图如图2-1所示。
图2-1 语法分析主程序示意图⑵递归下降分析程序示意图如图2-2所示。
⑶语句串分析过程示意图如图2-3所示。
图2-2 递归下降分析程序示意图 图2-3 语句串分析示意图 ⑷statement 语句分析程序流程如图2-4、2-5、2-6、2-7所示。
图2-4 statement语句分析函数示意图图2-5 expression表达式分析函数示意图图2-7 factor分析过程示意图四.实验步骤1.阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。
2.画出流程图、各函数之间的关系。
3.编写、调试代码。
完整代码。
4.测试,输入程序,得出结果。
五.实验结果六.实验心得1.本次实验让我对C语言有了更多的了解和更深刻的认知。
把以前的的知识又重新复习了一遍。
2.加深对语法分析原理的理解和对递归下降分析法的理解。
更加知道了用递归下降分析语法的步骤。
七.附录(源程序代码)#include "stdio.h"#include "string.h"#include "conio.h"#include "ctype.h"char prog[80],token[8]; /*存放构成单词符号的字符串*/char ch;int syn, /*存放单词字符的种别码*/n, kk,sum, /*存放整数型单词*/m,p; /*p是缓冲区prog的指针,m是token的指针*/ char *rwtab[6]={"begin","if","then","while","do","end"}; /*关键字*/void scaner();void lrparser();void yucu();void statement();void expression();void factor();void term();void scaner(){ m=0;sum=0;for(n=0;n<8;n++) token[n]='\0';ch=prog[p++];while(ch==' ') ch=prog[p++];if(isalpha(ch)) /*判断ch为字母字符*/{while(isalpha(ch)||isdigit(ch)) /*判断ch 为字母字符或者数字字符*/ { token[m++]=ch;ch=prog[p++]; }token[m++]='\0';ch=prog[p--];syn=10;for(n=0;n<6;n++)if(strcmp(token,rwtab[n])==0) /*字符串的比较*/ { syn=n+1;break; } }else if(isdigit(ch)) /*判断ch是数字字符*/{ while(isdigit(ch)) /*判断ch是数字字符*/ { sum=sum*10+ch-'0';ch=prog[p++]; }ch=prog[p--];syn=11; }elseswitch(ch){ case'<': m=0;token[m++]=ch;ch=prog[p++];if(ch=='>'){ syn=21;token[m++]=ch; }else if(ch=='='){ syn=22;token[m++]=ch; }else{ syn=20;ch=prog[p--]; }break;case'>': m=0;token[m++]=ch;ch=prog[p++];if(ch=='='){ syn=24;token[m++]=ch;}else{ syn=23;ch=prog[p--]; }break;case':': m=0;token[m++]=ch;ch=prog[p++];if(ch=='='){ syn=18;token[m++]=ch; }else{ syn=17;ch=prog[p--]; }break;case'+': syn=13;token[0]=ch;break;case'-': syn=14;token[0]=ch;break;case'*': syn=15;token[0]=ch;break;case'/': syn=16;token[0]=ch;break;case'=': syn=25;token[0]=ch;break;case';': syn=26;token[0]=ch;break;case'(': syn=27;token[0]=ch;break;case')': syn=28;token[0]=ch;break;case'#': syn=0;token[0]=ch;break;default: syn=-1; }}void lrparser(){ if(syn==1){ scaner();yucu();if(syn==6){ scaner();if(syn==0 && (kk==0))printf("success"); } } else{ printf("error");kk=1; }return;}void yucu(){ statement();while(syn==26){ scaner();statement(); }return;}void statement(){ if(syn==10){ scaner();if(syn==18){ scaner();expression(); }else{ printf("\":=\" ERROR!");kk=1; } }else{ printf("statement ERROR!");kk=1; }return;}void expression(){ term();while(syn==13 || syn==14){ scaner();term(); }return;}void term(){ factor();while(syn==15 || syn==16){ scaner();factor(); }return;}void factor(){ if(syn==10 || syn==11) scaner();else if(syn==27){ scaner();expression();if(syn==28)scaner();else{ printf("\')\' ERROR!"); } }else{ printf("expressions ERROR!");kk=1; }return;}void main(){ kk=0;printf("When input a \'#\' at the end of an line,this programe will be over.\n");printf("And the programe will output the codes you inputed just now.\n");p=0;printf("\nplease input string:\n");do { ch=getchar();prog[p++]=ch;}while(ch!='#');p=0;scaner();lrparser();getch();}。