最近遇到一个棘手的问题:解析表达式(要求:表达式能执行算术运算[+、-、*、/、%],逻辑运算[&&、||、!、!=、>、<、>=、<=、==]),位运算[&、|、^]操作。
求高手指点迷津!!位运算表达式解析表达式解析
求高手指点迷津!!位运算表达式解析表达式解析
解决方案 »
- 一个struts一个Hibernate问题 !!!
- 分享一个计算器程序(经典的题目吧 :) 支持超级复杂表达式
- java类型转换的小问题
- !!!SOS!!!80分求有关GUI界面编程
- 纪念抗日战争中死去的最可爱的人们(无名氏,有名的)以及无辜的中国老百姓,提前纪念
- linux 下使用java.awt出错,紧急求救
- "com.borland.datastore.jdbc.DataStoreDriver" 找不到怎么办啊?
- cannot resolve symbol什么意思?
- 谁有在一个class中包含有多个sql语句的例子(最好操作涉及2个以上的表)
- 为什么JAVA会是这个样子的呀???!!!!
- 一道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
;
每个编译器里都有这些文法