module examples::structParameters::Syntax
rascal-0.40.16
typepal-0.14.8
Usage
import examples::structParameters::Syntax;
Source code
http://github.com/usethesource/typepal/src/examples/structParameters/Syntax.rsc
Dependencies
extend examples::CommonLex;
syntax Program
start syntax Program = Declaration*;
syntax Type
syntax Type = "int" | "str" | Id TypeActuals;
syntax TypeActuals
syntax TypeActuals
= noActuals: ()
| withTypeActuals: "[" {Type ","}+ actuals "]"
;
syntax TypeHeader
syntax TypeHeader
= Id TypeFormals
;
syntax TypeFormals
syntax TypeFormals
= noTypeFormals: ()
| withTypeFormals: "[" {TypeFormal ","}+ formals"]"
;
syntax TypeFormal
syntax TypeFormal
= Id
;
syntax Declaration
syntax Declaration
= Type typ Id id "=" Expression exp ";"
| "struct" TypeHeader "{" {Field ","}* fields "}" ";"
;
syntax Field
syntax Field = Type typ Id name ;
syntax Expression
syntax Expression
= Integer i
| String s
| Id use
| Expression lhs "." Id fieldName
| "new" Id name TypeActuals
;
syntax Keywords
keyword Keywords = "int" | "str" | "struct" | "new";