基础语法规则定义
0. 词法规范(Lexical Rules)
-
空白字符:空格、制表符、换行符等,用于分隔词素。
-
注释:单行注释以
//
开始,多行注释以/*
开始,以*/
结束。 -
关键字:
if
,else
,while
,for
,function
,return
,true
,false
,null
,class
,new
, 等。 -
标识符:以字母或下划线开头,后跟字母、数字或下划线的序列。
-
字面量:
- 整数(
123
) - 浮点数(
123.45
) - 字符串(
"hello"
),支持转义字符。 - 布尔值(
true
,false
) - 空值(
null
)
- 整数(
-
操作符:
- 算术:
+
,-
,*
,/
,%
- 赋值:
=
,+=
,-=
,*=
,/=
- 比较:
==
,!=
,>
,<
,>=
,<=
- 逻辑:
&&
,||
,!
- 位操作:
&
,|
,^
,<<
,>>
,>>>
- 成员访问:
.
- 算术:
-
程序结构:
- 程序由一个或多个函数或类定义组成。
- 程序入口点是一个特殊的
main
函数。
1. 变量声明
- 变量必须在使用前声明,并明确指定类型。
ini
复制代码
let myVar: int = 10;
2. 常量声明
- 常量一旦赋值后,其值不可更改。
ini
复制代码
const pi: float = 3.14159;
3. 数据类型
- 支持基本数据类型和复合数据类型。
整理了这份面试笔记包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题
需要全套面试笔记【点击此处】即可免费获取
ini
复制代码
let myString: string = "Hello, XiaoGe!"; let myArray: int[] = [1, 2, 3];
4. 控制流语句
- 支持
if-else
、while
、for
、break
、continue
。
csharp
复制代码
if (condition) { // code block } else { // code block } while (condition) { // code block } for (let i: int = 0; i < length; i++) { // code block }
5. 函数定义
- 函数必须指定返回类型,如果没有返回值,使用
void
。
sql
复制代码
function add(a: int, b: int): int { return a + b; }
6. 类和对象
- 类用于创建对象,支持构造函数和析构函数。
csharp
复制代码
class Point { let x: int; let y: int; function constructor(x: int, y: int) { this.x = x; this.y = y; } function destructor() { // clean up code } function display() { print("Point(", this.x, ", ", this.y, ")"); } } let point: Point = new Point(3, 4); point.display();
高级特性
7. 继承和多态
- 支持类继承和方法重写。
csharp
复制代码
class Shape { function area(): float { return 0.0; } } class Circle : Shape { let radius: float; function constructor(radius: float) { this.radius = radius; } override function area(): float { return 3.14159 * radius * radius; } }
8. 接口
- 接口定义了一组方法规范。
csharp
复制代码
interface Drawable { function draw(); } class Rectangle : Drawable { function draw() { // drawing code } }
9. 泛型
- 支持泛型定义,允许类型参数化。
csharp
复制代码
class List<T> { let elements: T[]; function add(element: T) { elements.append(element); } } let intList: List<int> = new List<int>(); intList.add(1);
10. 异常处理
- 支持
try-catch-finally
语句。
php
复制代码
try { // code that might throw an exception } catch (e: Exception) { // handle exception } finally { // clean up code }
11. 命名空间
- 支持命名空间来组织代码。
csharp
复制代码
namespace MyNamespace { function foo() { // code } } MyNamespace.foo();
12. 访问修饰符
- 支持
public
、private
、protected
访问控制。
csharp
复制代码
class MyClass { public function publicMethod() { // code } private function privateMethod() { // code } protected function protectedMethod() { // code } }
13. 静态成员
- 支持静态方法和属性。
csharp
复制代码
class MathUtils { static let pi: float = 3.14159; static function add(a: int, b: int): int { return a + b; } } print(MathUtils.pi); let result = MathUtils.add(5, 3);
14. 枚举
- 支持枚举类型定义。
ini
复制代码
enum Color { RED, GREEN, BLUE } let myColor: Color = Color.RED;
15. 委托和事件
- 如果适用,支持委托和事件的机制。
csharp
复制代码
delegate void EventHandler(); class Button { event EventHandler onClick; function click() { if (onClick != null) { onClick(); } } } let button = new Button(); button.onClick += () => print("Button clicked!"); button.click();
16. 注释
- 支持单行和多行注释。
arduino
复制代码
// This is a single-line comment. /* This is a multi-line comment. */
17. 模块化
- 支持模块化编程,使用
import
和export
。
arduino
复制代码
module MathModule { export function add(a: int, b: int): int { return a + b; } } import MathModule; let result = MathModule.add(5, 3);
18. 标准库
语法规范:
- 定义标准库中的每个函数和类的名称、参数、返回类型。
- 规定命名空间的使用,以组织标准库中的组件。
示例:
arduino
复制代码
namespace std.io { function print(a: any): void; }
19. 编译和运行时
编译过程:
- 描述源代码到字节码或机器码的转换过程。
- 规定编译器前端(词法分析、语法分析、语义分析)和后端(代码生成、优化)的工作。
运行时环境:
- 定义垃圾回收机制、异常处理、类型检查等运行时行为。
示例:
rust
复制代码
// 案例,表示编译过程 source_code -> Lexer -> Parser -> AST -> BytecodeGenerator -> MachineCode
20. 安全性
内存安全:
- 规定如何避免缓冲区溢出、内存泄漏等。
类型安全:
- 确保类型的正确使用,避免类型错误。
示例:
csharp
复制代码
// 强制类型转换,需要显式进行以保证类型安全 let num: int = 10; let str: string = cast<string>(num);
21. 性能特性
优化策略:
- 描述编译时和运行时的优化技术,如内联展开、循环优化等。
示例:
arduino
复制代码
// 编译器优化选项 function optimize(code: Bytecode): Bytecode { // 实现优化逻辑 }
22. 调试和测试
调试工具:
- 提供断点、单步执行、变量观察等功能。
测试框架:
- 定义测试用例的编写和执行方式。
示例:
scss
复制代码
// 案例,表示测试框架 describe("Array Tests", () => { it("should handle push and pop", () => { let array = new Array(); array.push(1); expect(array.pop()).toBe(1); }); });
23. 文档和注释
注释规范:
- 规定单行和多行注释的语法。
文档生成:
- 描述如何从注释中自动生成API文档。
示例:
arduino
复制代码
/** * 向控制台打印内容 * @param a The value to print. */ function print(a: any): void { // ... }
24. 国际化和本地化
字符串处理:
- 规定字符串的编码格式,如UTF-8。
本地化处理:
- 提供本地化资源管理和字符串查找机制。
示例:
ini
复制代码
// 案例,表示本地化 let localizedString = localize("greeting", "Hello, World!");
25. 扩展性
插件和扩展机制:
- 允许通过插件扩展语言功能。
示例:
c
复制代码
// 案例,表示插件系统 class PluginSystem { function loadPlugin(name: string): void { // 加载并注册插件 } }