组合c语言,【整理】C语言中的复合(或组合)操作符

【背景】

用antlr要去解析EDDL,其中的METHOD中的DEFINITION部分是c语言的子集。

想要匹配其中的组合字符串,类似于++,–,+=,-=等等之类的组合字符。

想要搞清楚,所有的,这类的字符,有哪些。

【解决过程】

1.参考:

加上自己想到的,已经可以写出这些了:COMPOSITE_OPERATOR

:'==' |

'++' | '--' |

'+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' | '&=' | '^=' | '|=';

2.另外,又觉得未必是完整的,所以再去找找资料。

后来是参考wiki:

才发现漏了些,所以再补充成为:COMPOSITE_OPERATOR

:'==' | '!=' |

'++' | '--' |

'<>' |

'&&' | '||' |

'+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' | '&=' | '^=' | '|=';

3.然后又看到其中有个:

member selection的"->"

感觉好像C语言中,貌似没有这个用法。

不过又想起来了,原来是结构体指针,去获取其中的成员的时候,的确是:

structPointer->someField

的写法的。

但是,考虑到EDDL中的C,是C的subset子集,不支持指针的,所以"->"也就可以忽略了。

4.不过,倒是又参考:

看到还有其他的特殊的操作符的:Member pointed to bybof object pointed to byaa->*b

Member pointed to bybof objectaa.*b

但都不是标准的C中语法,所以此处也可以忽略。

5.另外也注意到,这种:delete[] a

或C#的string[] strArr;

中的"[]",

以及

域scope的"::"

都是C语言中,本身没有的,所以可以忽略。

6.后来又添了些别的,最后是:COMPOSITE_OPERATOR

:'==' | '!=' |

'<=' | '>=' |

'&&' | '||' |

'++' | '--' |

'<>' |

'+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' | '&=' | '^=' | '|=';

【总结】

不总结不知道,结果还真的发现,操作符方面,C本身的,组合(复合)类的操作符,本身就也还是不少的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值