Browsable Rascal Type Grammar

CC-BY

Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: api/rascal/type/extracted
Source used for this grammar: Jurgen J. Vinju, Type, 2009–2013 [Explore]

Summary

Syntax

Symbol ::=
	[int]::ε
	[bool]::ε
	[real]::ε
	[rat]::ε
	[str]::ε
	[num]::ε
	[node]::ε
	[void]::ε
	[value]::ε
	[loc]::ε
	[datetime]::ε
Symbol ::=
	[label]::(⟨name⟩:string ⟨symbol⟩:Symbol)
Symbol ::=
	[set]::⟨symbol⟩:Symbol
	[rel]::⟨symbols⟩:Symbol*
	[lrel]::⟨symbols⟩:Symbol*
	[tuple]::⟨symbols⟩:Symbol*
	[list]::⟨symbol⟩:Symbol
	[map]::(⟨from⟩:Symbol ⟨to⟩:Symbol)
	[bag]::⟨symbol⟩:Symbol
	[adt]::(⟨name⟩:string ⟨parameters⟩:Symbol*)
	[cons]::(⟨adt⟩:Symbol ⟨name⟩:string ⟨parameters⟩:Symbol*)
	[alias]::(⟨name⟩:string ⟨parameters⟩:Symbol* ⟨aliased⟩:Symbol)
	[func]::(⟨ret⟩:Symbol ⟨parameters⟩:Symbol*)
	[var-func]::(⟨ret⟩:Symbol ⟨parameters⟩:Symbol* ⟨varArg⟩:Symbol)
	[reified]::⟨symbol⟩:Symbol
Symbol ::=
	[parameter]::(⟨name⟩:string ⟨bound⟩:Symbol)
Production ::=
	[cons]::(⟨def⟩:Symbol ⟨symbols⟩:Symbol* ⟨kwTypes⟩:Symbol* ⟨kwDefaults⟩:(string (string α)*)* ⟨attributes⟩:Attr*)
	[func]::(⟨def⟩:Symbol ⟨symbols⟩:Symbol* ⟨kwTypes⟩:Symbol* ⟨kwDefaults⟩:(string (string α)*)* ⟨attributes⟩:Attr*)
	[choice]::(⟨def⟩:Symbol ⟨alternatives⟩:Production*)
Attr ::=
	[tag]::⟨tag⟩:α
Exception ::=
	[typeCastException]::(⟨from⟩:Symbol ⟨to⟩:φ)

GrammarLabMaintained by Dr. Vadim Zaytsev a.k.a. @grammarware. Last updated in September 2015. [↑]