【发布时间】:2013-02-27 10:44:43
【问题描述】:
我正在使用ParseKit 来解析度量单位。为了做到这一点,我必须提供一个语法。我尝试使用谷歌搜索,但这并没有让我走得太远。虽然这对我自己来说是一个有趣的练习,但我想确保我做对了。 ParseKit 期待这样的 BNF 语法:
@start = number units;
units = unit+ | unit+ / unit+;
unit = prefix baseUnit | baseUnit;
prefix = '' | 'milli' | 'micro' | 'pico';
baseUnit = 'm' | 'meter' | 'g' | 'gram'
我希望支持以下输入:
25 m²
25 m^-3
25 m**-5/kg**-2
25 m/s squared
25 mm² per second
25 m/s
5 kg meters per second squared
3 m-kg/s^2
3 m kilograms
【问题讨论】:
-
您是否正在寻求帮助来改进您发布的语法以使其完全支持您所需的输入?
-
@rmaddy 很高兴能参考官方/非官方语法,但欢迎改进。
-
什么是
me?kge是什么? -
您的语法不支持“秒”或“s”,但您想要的代码支持。你的前缀不包括'kg'的'kilo'(并且'kg'作为质量的基本单位而不是'g'是异常的。你没有混合电气单位(这不是一个大问题,因为我看到它;您没有任何电气示例)。您没有前缀的缩写。您可能会发现“mm”会导致问题(是米-米,毫-米,米-米或毫米)。您不支持复数形式(米、千克)。
-
@robmayoff:我认为'e'代表指数,是'^'等的替代品。我对此有点困惑;有缩写“e”的国际单位制单位吗?我不认为这是一个严重的问题,但有很多模棱两可的地方潜伏着。
标签: objective-c grammar units-of-measurement bnf parsekit