Merge pull request #1201 from quantified-uncertainty/issue-to-operator-priority
to operator priority
This commit is contained in:
		
						commit
						d60792aa93
					
				|  | @ -182,7 +182,7 @@ describe("Peggy parse", () => { | |||
|       "a.p1 to a.p2", | ||||
|       "{(:credibleIntervalToDistribution (:$_atIndex_$ :a 'p1') (:$_atIndex_$ :a 'p2'))}", | ||||
|     ) // lower than post | ||||
|     testParse("1 to 2 + 3", "{(:add (:credibleIntervalToDistribution 1 2) 3)}") // higher than binary operators | ||||
|     testParse("1 to 2 + 3", "{(:credibleIntervalToDistribution 1 (:add 2 3))}")  | ||||
|     testParse( | ||||
|       "1->add(2) to 3->add(4) -> add(4)", | ||||
|       "{(:credibleIntervalToDistribution (:add 1 2) (:add (:add 3 4) 4))}", | ||||
|  |  | |||
|  | @ -98,12 +98,20 @@ equality | |||
|   equalityOp "operator" = '=='/'!=' | ||||
| 
 | ||||
| relational | ||||
|   = left:additive _ operator:relationalOp _nl right:additive  | ||||
|   = left:credibleInterval _ operator:relationalOp _nl right:credibleInterval  | ||||
|   { return h.makeFunctionCall(h.toFunction[operator], [left, right])} | ||||
|   / additive | ||||
|   / credibleInterval | ||||
| 
 | ||||
|   relationalOp "operator" = '<='/'<'/'>='/'>' | ||||
| 
 | ||||
| credibleInterval | ||||
|   = head:additive tail:(__ operator:credibleIntervalOp __nl arg:additive {return {operator: operator, right: arg}})*  | ||||
|   { return tail.reduce(function(result, element) { | ||||
|       return h.makeFunctionCall(h.toFunction[element.operator], [result, element.right]) | ||||
|     }, head)} | ||||
| 
 | ||||
|     credibleIntervalOp "operator" = 'to' | ||||
|    | ||||
| additive | ||||
|   = head:multiplicative tail:(_ operator:additiveOp _nl arg:multiplicative {return {operator: operator, right: arg}})*  | ||||
|   { return tail.reduce(function(result, element) { | ||||
|  | @ -121,21 +129,13 @@ multiplicative | |||
|   multiplicativeOp "operator" = '*' / '/' / '.*' / './' | ||||
| 
 | ||||
| power | ||||
|   = head:credibleInterval tail:(_ operator:powerOp _nl arg:credibleInterval {return {operator: operator, right: arg}})*  | ||||
|   = head:chainFunctionCall tail:(_ operator:powerOp _nl arg:chainFunctionCall {return {operator: operator, right: arg}})*  | ||||
|   { return tail.reduce(function(result, element) { | ||||
|       return h.makeFunctionCall(h.toFunction[element.operator], [result, element.right]) | ||||
|     }, head)} | ||||
| 
 | ||||
|   powerOp "operator" = '^' / '.^' | ||||
| 
 | ||||
| credibleInterval | ||||
|   = head:chainFunctionCall tail:(__ operator:credibleIntervalOp __nl arg:chainFunctionCall {return {operator: operator, right: arg}})*  | ||||
|   { return tail.reduce(function(result, element) { | ||||
|       return h.makeFunctionCall(h.toFunction[element.operator], [result, element.right]) | ||||
|     }, head)} | ||||
| 
 | ||||
|     credibleIntervalOp "operator" = 'to' | ||||
| 
 | ||||
| chainFunctionCall | ||||
|   = head:unary tail:(_ ('->'/'|>') _nl chained:chainedFunction {return chained})*  | ||||
|   { return tail.reduce(function(result, element) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user