软考——程序设计语言知识点总结(文法知识点)

目录

一、文法

二、各种程序语言的特点

三、词法、语法、语义分析的区别

四、考试知识点及试题(本章共考6分,上午题)


一、文法

(1)定义:描述语言语法结构的规则称为文法

(2)分类:0型文法(也称短语文法)、1型文法(也称上下文有关文法,对非终结符的替换要考虑上下文)、2型文法(也称上下文无关文法,非终结符的替换不需要考虑上下文)、3型文法(正规文法或线性文法)

(3)运算符 ‘|’、‘.’ 、‘*’、分别表示或、连接(.号可省略)、和闭包;

 

(4)正规式与正规集的实例

(5)正规式的代数性质

二、各种程序语言的特点

1. Fortran语言(科学计算,执行效率高)
2. Pascal语言(为教学而开发的,表达能力强, Delphi)
3.C语言(指针操作能力强,高效)
4. Lisp语言(函数式程序语言,符号处理,人工智能)
5.C++语言(面向对象,高效)
6. Java语言(面向对象,中间代码,跨平台)
7.C#语言(面向对象,中间代码,. Net)
8. Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
9. Python语言(解释型,面向对象,脚本语言)

三、词法、语法、语义分析的区别

(1)词法分析:主要任务把源程序的字符串转换为单词符号序列,识别源程序中的记号。

(2)语法分析:分析单词符号是否形成符合语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析每条语句是否有正确的逻辑结构。

(3)语义分析:主要检查源程序是否有语义错误,如赋值语句的左端与右端的类型不匹配,除数为0等。

四、考试知识点及试题(本章共考6分,上午题)

1.语法制导翻译是一种静态语义分析方法

2.浮点数相加时,小阶要向大阶对齐,同时将尾数右移n位。

3.移进-归约分析方法是自底向上的分析方法,递归-下降分析方法和预测分析法是自顶向下的分析方法。

4.常用的中间代码有:后缀式、三地址码、三元式、四元式、树等。

5.大多数通用程序语言使用上下文无关文法描述语法

6.文法

7.有限自动机(DFA),从初态走到终态就是DFA能识别序列

 8.求算术表达式的后缀式(加括号法,将表达式的运算符都放在括号内,不够加括号,最后将运算符放在相邻最近括号外就是答案)

 

 

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++程序设计语言文法可以采用巴克斯-诺尔范式(Backus-Naur Form,BNF)或扩展巴克斯-诺尔范式(Extended BNF,EBNF)进行描述。下面是一份简化的C++ BNF文法: - program: declaration_list - declaration_list: declaration | declaration_list declaration - declaration: function_declaration | variable_declaration - function_declaration: type_specifier function_name ( parameter_list ) compound_statement - variable_declaration: type_specifier variable_list ; - variable_list: variable | variable_list , variable - variable: identifier | identifier = expression - type_specifier: int | float | double | char | void - parameter_list: parameter | parameter_list , parameter - parameter: type_specifier identifier - statement: compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement - compound_statement: { statement_list } - statement_list: statement | statement_list statement - expression_statement: expression ; - selection_statement: if ( expression ) statement | if ( expression ) statement else statement | switch ( expression ) statement - iteration_statement: while ( expression ) statement | do statement while ( expression ) ; | for ( expression_statement ; expression_statement ; expression ) statement - jump_statement: return expression ; | break ; | continue ; - expression: assignment_expression | expression , assignment_expression - assignment_expression: logical_or_expression | unary_expression assignment_operator assignment_expression - assignment_operator: = | *= | /= | %= | += | -= | <<= | >>= | &= | ^= | |= - logical_or_expression: logical_and_expression | logical_or_expression || logical_and_expression - logical_and_expression: inclusive_or_expression | logical_and_expression && inclusive_or_expression - inclusive_or_expression: exclusive_or_expression | inclusive_or_expression | exclusive_or_expression - exclusive_or_expression: and_expression | exclusive_or_expression ^ and_expression - and_expression: equality_expression | and_expression & equality_expression - equality_expression: relational_expression | equality_expression == relational_expression | equality_expression != relational_expression - relational_expression: shift_expression | relational_expression < shift_expression | relational_expression > shift_expression | relational_expression <= shift_expression | relational_expression >= shift_expression - shift_expression: additive_expression | shift_expression << additive_expression | shift_expression >> additive_expression - additive_expression: multiplicative_expression | additive_expression + multiplicative_expression | additive_expression - multiplicative_expression - multiplicative_expression: unary_expression | multiplicative_expression * unary_expression | multiplicative_expression / unary_expression | multiplicative_expression % unary_expression - unary_expression: postfix_expression | ++ unary_expression | -- unary_expression | unary_operator unary_expression - postfix_expression: primary_expression | postfix_expression [ expression ] | postfix_expression ( argument_expression_list ) | postfix_expression . identifier | postfix_expression -> identifier | postfix_expression ++ | postfix_expression -- - primary_expression: identifier | constant | string_literal | ( expression ) | function_name ( ) | function_name ( argument_expression_list ) - argument_expression_list: assignment_expression | argument_expression_list , assignment_expression 这个文法描述了C++程序设计语言的基本语法结构,包括程序、声明、函数、变量、语句、表达式等。其中,program是程序的入口,由一系列声明组成;declaration_list表示一系列声明;declaration表示函数或变量声明;function_declaration表示函数声明;variable_declaration表示变量声明;type_specifier表示类型说明符;parameter_list表示函数参数列表;statement表示语句;compound_statement表示复合语句;expression_statement表示表达式语句;selection_statement表示选择语句;iteration_statement表示迭代语句;jump_statement表示跳转语句;expression表示表达式;assignment_expression表示赋值表达式;logical_or_expression表示逻辑或表达式;logical_and_expression表示逻辑与表达式;inclusive_or_expression表示按位或表达式;exclusive_or_expression表示按位异或表达式;and_expression表示按位与表达式;equality_expression表示等于表达式;relational_expression表示关系表达式;shift_expression表示移位表达式;additive_expression表示加减表达式;multiplicative_expression表示乘除模表达式;unary_expression表示一元表达式;postfix_expression表示后缀表达式;primary_expression表示基本表达式;argument_expression_list表示函数参数表达式列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值