A Joyce programozási nyelv

Jelek és szeparátorok

Grafikus karakterek

GraphicCharacter = Letter | Digit | SpecialCharacter | Space

Letter = SmallLetter | CapitalLetter

SmallLetter = "a" |"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"|"s"|"t"|"u"|"v"|"w"|"x"|"y"|"z"

CapitalLetter = "A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"

Digit = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"

SpecialCharacter = "!"|"""|"#"|"$"|"%"|"&"|"'"|"("|")"|"*"|"+"|","|"-"|"."|"/"|":"|";"|"<"|"="|">"|"?"|"@"|"["|"\"|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~"

Space = " "

Tokenek (szavak)

Token = WordToken | SpecialToken | Name | Numeral | GraphicToken | ControlToken | StringToken

Foglalt szavak

WordToken = "agent" | "and" | "array" | "begin" | "const" | "div" | "do" | "else" | "end" | "if" | "mod" | "nil" | "not" | "of" | "or" |
"ord" | "poll" | " record" | "then" | "type" | "var" | "while"

SpecialToken = "(" | ")"|"*"|"+"|","|"-"|"."|"/"|":"|";"|"<"|"="|">"|"["|""|"]"|"!"|"?"|"&"|"|"|". ."|":="|"<="|"<>"|">="|"->"

Numeral = SimpleNumeral | RealNumeral

A szavakban a nagy és a kis betűk azonosaknak tekintendők.

Separator = Space | NewLine | Comment

Comment = "{" CommentText "}"

CommentText = { GraphicCraracter | NewLine | Comment }

Az összes programsor egy új sor karakterrel végződik. A szavak között kell lennie legalább egy szeparátornak.

Példa:

{ this is a { nested } comment that extends over two lines }

A standard nevek (kulcsszavak) az
integer boolen char real false true
ezek jelentése előre van definiálva és használhatók bármelyik programban, az összes többi névnek a programban definiálva kell lennie.

Nevek:(azonosítók)

Name = Letter { Letter | Digit }
A foglalt szavakat nem lehet neveknek használni. A nevekben lévő nagybetűk egyenértékűek a kis betűkkel.

Példa:

x true RC4000 ConcurrentPascal