glue -- little language for expressing C formats...


embedded in a string: ${glueExpression}
in a file: glueExpression

glueExpression:
	conditionalStatement |
	functionApplication |
	variableReference |
	constant

conditionalStatement:
    if glueExpression then glueExpression elifOpt elseOpt fi

elifOpt:
    else if glueExpression then glueExpression elifOpt | /* nothing */

elseOpt:
    elif glueExpression then glueExpression | /* empty */

loopStatement:
    while glueExpression do glueExpression endwhile |
    loop glueExpression until glueExpression endloop

functionApplication:
    variableName( argumentList )

argumentList:
    glueExpression |
    glueExpression , argumentList

filterList:
    -> filterName filterList |
    -> filterName

logicalExpression:
    glueExpression is the same as glueExpression |
    glueExpression differs from glueExpression |

# the following does not yet get operator precedence right.
# I think I'll do Booleans then BODMAS.
# No C-style bit crunching yet.  Should there be??

subExpression:
    number |
    string |
    subExpression binaryOp subExpression |
    unaryOp subExpression

