雇主没找到满意的工作者
| 任务状态: | 招标中 流标 |
|
| 招标开始时间:2008-08-21 10:00 流标时间:2008-09-26 10:00 | ||
| 任务序号: | Q5536 | 任务分类: 程序类 > 脚本/工具 |
| 任务中国申明: 您可通过使用任币或支付手续费来参加招标任务,任币可通过实名认证免费获得。 参加招标任务后,提交结果只为证明您有能力完成,您还需与雇主足够的沟通确认方案,为了您的权益请勿直接在方案中直接提交完整作品。 |
写一个语法的bnf文本(antlr3.0格式)
一: 需求:
写一个指定语言的antlr3.0格式的bnf文本(.g文件)。并提供相应的测试程序,
该测试程序不要求处理语法。只需要输出的AST(抽象语法树)符合要求即可。
二:语法说明如下
(注:描述得不是很清楚,可以在QQ上交流以便确认。)
该语法类似于数据库的存储过程(当然简单得多),只支持字符串、数值两种常量。
变量只支持数据集(多条记录)、记录(多个字段)、普通变量三种。变量最只支持字符串类型。
能提出对语法的改进意见更好。价格在300-500之间。
1. 结构
------------------------------------
xxx = 'abc'
function aaa (a,b,c) {
语句...
}
function bbb (c,d) {
语句...
}
--------------------------------------
2. 所有语句以':'结束:
3. 语句
语句1:
xxx = 'abc'
xxx = 'abc'|'def'
xxx = '3' + yyy + 5 + 10 * 0.5 //四则运算表达式
xxx = 'abc' + yyy + foo('kkk', zzz)
xxx = yyy.zzz
yyy.zzz = 'cde'
xxx = yyy[0].zzz
yyy[zzz].nnn = 'abfds'
//变量定义有3种:identifier , identifier.identifier identifier[expr].identifier
//常量定义有2种:数字, 字符串
--------------------------------------
语句2:
select | update | insert 语句 //保持原文,作为一个单独节点
--------------------------------------
语句3:
into 'global'? vars a,b,c select ..... / select 后保持原文
into 'global'? array x select .... / select 后保持原文
into 'global'? temp y select .... / select 后保持原文
-------------------------------------
语句4:
类似于java的的if {} else if {}
------------------------------------
语句5:
for (i=0; i}
-------------------------------------
语句6:
addresult 变量名 //yyy[zzz] 或 yyy
-------------------------------------
语句7:
continue
break
return 变量名
--------------------------------------
语句8:
a = call bbb(expr+)
4. 注释:
与java一样,两种注释
xfsql.g 已基本完成,只是还有不少的warining
我的联系方式:
QQ: 1259729
Email: xfygj@126.com
- 雇主信用:0
- 累计发布:1
- 认证情况:
- 注册时间:2008-05-01 16:56
有 1 人收藏了该任务
有 2 人参加了该任务
其 1 人中已提交了方案


