Layout in Rascal
Wenn ich das Lisra-Rezept importiere,
import demo::lang::Lisra::Syntax;
Dies erzeugt die Syntax:
layout Whitespace = [\t-\n\r\ ]*;
lexical IntegerLiteral = [0-9]+ !>> [0-9];
lexical AtomExp = (![0-9()\t-\n\r\ ])+ !>> ![0-9()\t-\n\r\ ];
start syntax LispExp
= IntegerLiteral
| AtomExp
| "(" LispExp* ")"
;
Durch dasstart syntax
-definition, Layout sollte um die Eingabe ignoriert werden, wenn es analysiert wird, wie in der Dokumentation angegeben:http: //tutor.rascal-mpl.org/Rascal/Declarations/SyntaxDefinition/SyntaxDefinition.htm
Allerdings, wenn ich tippe:
rascal>(LispExp)` (something)`
Dies gibt mir einconcrete syntax fragment
error (oder einParseError
bei Verwendung desparse
-Funktion), im Gegensatz zu:
rascal>(LispExp)`(something)`
Welche erfolgreich analysiert. Ich habe dies sowohl mit einer der neuesten Versionen von Rascal als auch mit der Eclipse-Plugin-Version versucht. Mache ich hier etwas falsch?
Vielen Dank
Ps. Lisra'sparse
-Funktion
public Lval parse(str txt) = build(parse(#LispExp, txt));
Auch im Beispiel schlägt fehl:
rascal>parse(" (something)")
|project://rascal/src/org/rascalmpl/library/ParseTree.rsc|(10329,833,<253,0>,<279,60>): ParseError(|unknown:///|(0,1,<1,0>,<1,1>))
at *** somewhere ***(|project://rascal/src/org/rascalmpl/library/ParseTree.rsc|(10329,833,<253,0>,<279,60>))
at parse(|project://rascal/src/org/rascalmpl/library/demo/lang/Lisra/Parse.rsc|(163,3,<7,44>,<7,47>))
at $shell$(|stdin:///|(0,13,<1,0>,<1,13>))