X编程语言定义--词汇表、符号表

一直喜欢操作系统,因为这个原因后来才无意中做了程序员,但那个东西实在太大了,退而次之,做个小语言来玩玩。

基本都是来源于C/PASCAL/Oberon/BASIC/C#;用PASCAL的原因是它语法和逻辑清晰易懂,用C/C++/C#中的部分小特性,是因为这此常用也熟悉些。

另外LISP类的函数式语言虽然很先进,但更多的情况下看起来好像显的不是很自然。理想情况下,是需要实现LAMDA表达式的。

涉及到C#则只是最终语言是因为题外原因的干预,可以写程序时模拟出它的委托较简单的实现,不然最后实现事件之类的通信机制不方便,无法做图形界面的处理。

而且QT里的那种信号槽的机制实现太复杂了。但最主要的是偏向自己个人的习惯。然后最终的效果是也能方便的实现JS和XCBLIB这样在页面或界面上也能方便多线程处理的。

因为是拿来主义,名字也还没想好,但初步确定这是个类C的静态编译小语言,就先叫X吧。

--注,简单的说明:

1,为了实现简单关键字全部须大写;也不允许复杂的循环嵌套;

2,因为静态编译型语句的常用的应用领域大概也就是图型图像,硬件操作,数据库,网络几大块;所以下面的关键字尽量精减,但还是有点多;

3,下面的表内容可能会随时变化,加或减关键字(保留字)。本来循环想用VB的语法,想想为了少几个关键词还是算了。

关键字        作用

=====================

ARRAY                     数组定义

BEGIN                     语句

BOOLEAN                 布尔类型

CONST                     常量声明

CLASS                     类声明

DIV                         整除

DO                          语句

ELSE                       语句

END                        语句

FUNCTION               过程声明(也叫函数或方法,但因个人偏向部分词更靠近数学上的术语;因此这里得仍然叫做函数)

INTERGER               整型

IF                           语句

OF                          语句

THEN                      语句

TYPE                       类型定义

VAR                        变量定义

WHILE                    语句

二,符号表(逻辑与或非,个人更喜欢AND这样的字母型式,但用了这个在数学计算时又不方便,只好扔了)

符号        作用

=====================

;                           语句结束

:                           类型标识

:=                         赋值

=                          等于

!=                         不等于

>                          大于

>=                        大于等于

<                          小于

<=                        小于等于

+                           加

-                            减

*                           乘

/                            除

,                            变量分隔

(                            左小括号

)                            右小括号

[                            标识数组下标

]                            标识数组下标

&                           逻辑与

|                            逻辑或

!                            逻辑非

\                            转义

时间: 2024-11-03 05:35:12

X编程语言定义--词汇表、符号表的相关文章

《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅰ

3.1符号表 符号表最主要的目的就是将一个键和一个值联系起来.用例能够将一个键值对插入符号表并希望在之后能够从符号表的所有键值对中按照键值姐找到对应的值.要实现符号表,我们首先要定义其背后的数据结构,并指明创建并操作这种数据结构以实现插入.查找操作所需要的算法. 查找在大多数应用程序中都至关重要,许多编程环境也因此将符号表实现为高级的抽象数据结构,包括Java——我们会在3.5节中讨论Java的符号表实现.下标给出的例子是在一些典型的应用场景中可能出项的键和值.我们马上会看到一些参考性的用例.3

我的第一个编译器之符号表

符号表 符号表是一种供编译器用于保存有关源程序构造的各种信息的数据结构,这些信息在编译器的分析阶段被逐步收集并放入符号表. 如我们输入 {int x;char y;{bool y; x; y; }x; y;} 期望生成: {{x:int; y:bool;} x:int; y:char;} 内层块的x来源于外部. 为每个作用域设置一个符号表 package com.bigbear.main; public class Code { public static String content = "{

编译器架构的王者LLVM——(9)栈式符号表的构建

LLVM平台,短短几年间,改变了众多编程语言的走向,也催生了一大批具有特色的编程语言的出现,不愧为编译器架构的王者,也荣获2012年ACM软件系统奖 -- 题记 版权声明:本文为 西风逍遥游 原创文章,转载请注明出处 西风世界 http://blog.csdn.net/xfxyy_sxfancy 栈式符号表的构建 栈式符号表对于一款编译器,无疑是核心的组件. 无论你在做什么符号扫描,那么都离不开符号表,如何得知一个符号是否定义,以及它的类型,那么唯有查看符号表中的记录. 栈式符号表并不复杂,但思

算法-符号表的实现(顺序查找和二分查找)

符号表是一种存储键值对的数据结构,支持两种操作插入和查找,就是将一组新的键值对存入表中然后根据给定的键得到对应的值,在编程语言中常用Dictionary原理类似.符号表是一种典型的抽象数据结构,在生活之中应用的场景也很多,可以根据钥匙开门,域名解析的时候的IP地址查询,字典和图书的简介和页数,key和value是密不可分的,通过key我们可以很快找到我们需要的value. 无序链表的顺序查找 主要通过Node节点存储数据,之前的博客中有关于链表的实现,详情可参考之前的博客,代码有注释就解释太多了

Symbol Table(符号表)

一.定义 符号表是一种存储键值对的数据结构并且支持两种操作:将新的键值对插入符号表中(insert):根据给定的键值查找对应的值(search). 二.API 1.无序符号表 几个设计决策: A.泛型 在设计方法时没有指定处理对象,而是使用了泛型. 并且将键(Key)和值(Value)区分开来. B.重复键的处理 规则: 每个值(Value)都只对应一个键(Key)(即不允许存在重复的键). 当用例代码向表中存入的键值对和表中的已有的键(以及关联的值)冲突时,新的值替代旧的值. C.Null 键

ELF Format 笔记(七)—— 符号表

最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞,道一声珍重,道一声珍重,那一声珍重里有蜜甜的忧愁 —— 徐志摩 符号表 (symbol table) 中保存着符号的定义或者引用信息.对于 android so 文件来说,.dynsym 符号表保存着库文件的导入和导出符号. 用 readelf 看一下 android liblog.so 的 .dynsym 动态符号表: 符号 __cxa_finalize 的 Ndx(st_shndx) 为 UND,表明该符号在本 so 中未定义,需要去 libl

扩充C0文法编译器开发笔记(一)符号表

零.简介 这是一个编译大作业. 一.扩充C0文法 文法包括 常量说明和定义.变量说明和定义.无返回值函数定义和调用.有返回值函数定义和调用.条件语句.while循环语句.情况语句.赋值语句.返回语句.读语句.写语句,支持加减乘除四则运算.整数比较运算.包含一维数组.不包含实型.不包含for循环语句.程序由main方法进入.具体文法见下: 1 <加法运算符> ::= +|- 2 <乘法运算符> ::= *|/ 3 <关系运算符> ::= <|<=|>|&

Javac源码简单分析之解析和填充符号表

一.说明 符号表是由一组符号地址和符号信息构成的表格.符号表中所登记的信息在编译的不同阶段都要用到,在语义分析(后面的步骤)中,符号表所登记的内容将用于语义检查和产生中间代码,在目标代码生成阶段,党对符号名进行地址分配时,符号表是地址分配的依据. 二.主要的类与方法 解析和填充符号表这个过程主要由com.sun.tools.javac.comp.Entry及com.sun.tools.javac.comp.MemberEnter两个类来实现的. com.sun.tools.javac.comp.

符号管理之符号表

在符号表模块输出一个符号表类型Table和各种能符号表的实例 其中实例包括: Table constants Table externals Table identifiers Table globals Table types Table labels; 其中types表在第四章类型中会涉及 上述符号表的子集实现了ANSI  C的三种名字空间.identifiers保存一般的标识符:externals存放声明为extern的标识符,用于警告外部标识符声明冲突globals是identifier