Skip to content

Instantly share code, notes, and snippets.

@Descalon
Created April 18, 2025 13:05
Show Gist options
  • Save Descalon/497b738d762353c7b6809641d095ea09 to your computer and use it in GitHub Desktop.
Save Descalon/497b738d762353c7b6809641d095ea09 to your computer and use it in GitHub Desktop.
Karser example Calculator Language
language("CalculatorLang") {
val inputFieldConcept = concept("InputField") {
implements(INamedConcept)
editor {
collection(CollectionLayout.INDENT){
stringConstant("Input")
property("name")
}
}
}
val inputFieldRefConcept = concept("InputFieldReference") {
extends(BaseLanguage.Expression)
ref("field", inputFieldConcept)
editor {
ref("field", "name")
}
}
val outputFieldConcept = concept("OutputField"){
implements(INamedConcept)
child("expression", BaseLanguage.Expression)
editor {
collection(CollectionLayout.INDENT){
stringConstant("Output")
child("expression")
}
}
}
concept("Calculator") {
implements(INamedConcept)
isRoot()
child("input", inputFieldConcept)
child("output", outputFieldConcept) {
isOptional = true
}
editor {
collection(CollectionLayout.INDENT){
stringConstant("Calculator")
property("name")
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment