Languages-beta : SL-Disambiguation.cbs | PRETTY | PDF
Language "SL"
A Disambiguation
Specification of disambiguation for parsing currently requires direct use of the corresponding SDF3 notation in comments, along with embedded productions in CBS notation. The well-formedness of the SDF3 notation is not checked. A future version of CBS is to include appropriate constructs for specifying disambiguation.
Syntax SDF
context-free syntax
expr ::= expr '+' expr {left}
expr ::= expr '/' expr {left}
expr ::= expr '*' expr {left}
expr ::= expr '-' expr {left}
expr ::= expr '==' expr {non-assoc}
expr ::= expr '<=' expr {non-assoc}
expr ::= expr '<' expr {non-assoc}
expr ::= expr '!=' expr {non-assoc}
expr ::= expr '>=' expr {non-assoc}
expr ::= expr '>' expr {non-assoc}
expr ::= expr '&&' expr {left}
expr ::= expr '||' expr {left}
expr ::= id '=' expr {right}
expr ::= expr '.' id '=' expr {right}
context-free priorities
{left:
expr ::= expr '.' id '(' expr-list? ')'
}
>
{right:
expr ::= '!' expr
}
>
{left:
expr ::= expr '*' expr
expr ::= expr '&&' expr
}
>
{non-assoc:
expr ::= expr '==' expr
expr ::= expr '<=' expr
expr ::= expr '<' expr
expr ::= expr '!=' expr
expr ::= expr '>=' expr
expr ::= expr '>' expr
}
>
{left:
expr ::= expr '+' expr
expr ::= expr '-' expr
expr ::= expr '||' expr
}
>
{right:
expr ::= id '=' expr
expr ::= expr '.' id '=' expr
}
Lexis SDF
lexical syntax
id
= "function" {reject}
id
= "true" {reject}
id
= "false" {reject}
id
= "return" {reject}
id
= "break" {reject}
id
= "continue" {reject}
id
= "while" {reject}
id
= "if" {reject}
id
= "else" {reject}
lexical restrictions
// Ensure greedy matching for lexicals
nat
-/- [0-9]
id
-/- [a-zA-Z0-9\_]