* CM KCL: add annotations * Make AnnotationName a token that includes the @ * The text of AnnotationName is now optional (#5324) --------- Co-authored-by: Matt Mundell <matt@mundell.me>
154 lines
4.2 KiB
Plaintext
154 lines
4.2 KiB
Plaintext
# alone
|
|
|
|
@a
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName))
|
|
|
|
# alone and anonymous
|
|
|
|
@
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName))
|
|
|
|
# empty
|
|
|
|
@ann()
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList))
|
|
|
|
# empty and anonymous
|
|
|
|
@()
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList))
|
|
|
|
# equals
|
|
|
|
@setting(a=1)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number))))
|
|
|
|
# operator
|
|
|
|
@ann(a*1)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
MultOp,
|
|
Number))))
|
|
|
|
# anonymous
|
|
|
|
@(a=1)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number))))
|
|
|
|
# complex expr
|
|
|
|
@ann(a=(1+2+f('yes')))
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
ParenthesizedExpression(BinaryExpression(BinaryExpression(Number,
|
|
AddOp,
|
|
Number),
|
|
AddOp,
|
|
CallExpression(VariableName,
|
|
ArgumentList(String))))))))
|
|
|
|
# many args
|
|
|
|
@ann(a=1, b=2)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number),
|
|
AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number))))
|
|
|
|
# space around op
|
|
|
|
@ann(a / 1)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
MultOp,
|
|
Number))))
|
|
|
|
# space around sep
|
|
|
|
@ann(a/1 , b/2)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
MultOp,
|
|
Number),
|
|
AnnotationProperty(PropertyName,
|
|
MultOp,
|
|
Number))))
|
|
|
|
# trailing sep
|
|
|
|
@ann(a=1,)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number))))
|
|
|
|
# lone sep
|
|
|
|
@ann(,)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList))
|
|
|
|
# inside fn
|
|
|
|
fn f() {
|
|
@anno(b=2)
|
|
}
|
|
|
|
==>
|
|
Program(FunctionDeclaration(fn,
|
|
VariableDefinition,
|
|
ParamList,
|
|
Body(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number))))))
|
|
|
|
# laxer with space than the language parser is
|
|
|
|
@anno (b=2)
|
|
|
|
==>
|
|
Program(Annotation(AnnotationName,
|
|
AnnotationList(AnnotationProperty(PropertyName,
|
|
Equals,
|
|
Number))))
|