最近遇到一个棘手的问题:解析表达式(要求:表达式能执行算术运算[+、-、*、/、%],逻辑运算[&&、||、!、!=、>、<、>=、<=、==]),位运算[&、|、^]操作。
求高手指点迷津!!位运算表达式解析表达式解析
求高手指点迷津!!位运算表达式解析表达式解析
解决方案 »
- JQuery有几种实现方式
- 线程同步问题,分析下程序运行结果
- 关于GUI JLabel 的一个简单问题
- resultset.update???
- 高手帮忙看看关于JDBC插入数据的问题
- [求助]这程序是怎么了?!!!!
- 采用数据库自增式id插入数据,如何得知插入的具体id值?
- Linux系统下Java运行环境的配置方法
- 谁用过jintegra,请帮帮我,很急啊,在线等待!!!
- 报错:Multiple annotations found at this line: - a cannot be resolved
- 一道java题目不懂什么意思,请教一下
- 三年JavaEE开发积累的那些代码之一:JavaSE篇
我这有个可以参考的代码,楼主可以参考一下,只能参考哈。
从C语言转换过来的Java版,字符串代数运算器
=====================
为什么要JAVA来做,我一个做C/C++的同事,自己已经开发了一门嵌入式语言,目前在测试阶段,如果有需求,我可以帮你问一下他是怎么实现的。
constant_expression
: conditional_expression
;expression
: logical_or_expression
| expression token_comma logical_or_expression
;conditional_expression
: logical_or_expression
| logical_or_expression token_question constant_expression token_colon constant_expression
;logical_or_expression
: logical_and_expression
| logical_or_expression token_compare_or logical_and_expression
;logical_and_expression
: inclusive_or_expression
| logical_and_expression token_compare_and inclusive_or_expression
;inclusive_or_expression
: exclusive_or_expression
| inclusive_or_expression token_or exclusive_or_expression
; exclusive_or_expression
: and_expression %prec lower_than_and
| exclusive_or_expression token_xor and_expression %prec lower_than_and
; and_expression
: equality_expression
| and_expression token_and equality_expression
;equality_expression
: relational_expression
| equality_expression token_compare_equal relational_expression
| equality_expression token_compare_no_equal relational_expression
;relational_expression
: shift_expression
| relational_expression token_left_angle shift_expression
| relational_expression token_right_angle shift_expression
| relational_expression token_compare_less_equal shift_expression
| relational_expression token_compare_grate_equal shift_expression
;shift_expression
: additive_expression %prec lower_than_additive
| shift_expression token_left_shift additive_expression %prec lower_than_additive
| shift_expression token_right_shift additive_expression %prec lower_than_additive
;additive_expression
: multiplicative_expression
| additive_expression token_add multiplicative_expression
| additive_expression token_sub multiplicative_expression
;multiplicative_expression
: cast_expression
| multiplicative_expression token_mul unary_expression
| multiplicative_expression token_div unary_expression
| multiplicative_expression token_mod unary_expression
;cast_expression
: unary_expression %prec lower_than_right_round
| token_cast token_left_angle type_id token_right_angle token_left_round unary_expression token_right_round
; unary_expression
: postfix_expression %prec lower_than_self
| token_inc cast_expression
| token_dec cast_expression
| unary_operator cast_expression
; unary_operator
: token_and
| token_sub
| token_negate
| token_tilde
;postfix_expression
: primary_expression
| postfix_expression token_inc
| postfix_expression token_dec
; primary_expression
: literal
| call_specifier
| token_left_round constant_expression token_right_round
;
每个编译器里都有这些文法