File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -37,25 +37,27 @@ public override object VisitIdentifier([NotNull] SchemeParser.IdentifierContext
3737
3838 public override object VisitList ( [ NotNull ] SchemeParser . ListContext context )
3939 {
40- var elements = context . datumOrPair ( ) ;
40+ var elements = context . datum ( ) ;
4141
4242 return CreateList ( elements ) ;
4343 }
4444
45- private object CreateList ( SchemeParser . DatumOrPairContext [ ] elements )
45+ public override object VisitPair ( [ NotNull ] SchemeParser . PairContext context )
46+ {
47+ var elements = context . datum ( ) ;
48+ return CreatePair ( elements ) ;
49+ }
50+
51+ private object CreateList ( SchemeParser . DatumContext [ ] elements )
4652 {
4753 if ( elements . Length == 0 )
4854 return AtomHelper . Nil ;
4955
50- if ( elements . First ( ) . datum ( ) == null )
51- return CreatePair ( elements . First ( ) . pair ( ) ) ;
52-
5356 return AtomHelper . CreateCons ( ( ISExpression ) Visit ( elements . First ( ) ) , ( ISExpression ) CreateList ( elements . Skip ( 1 ) . ToArray ( ) ) ) ;
5457 }
5558
56- private object CreatePair ( SchemeParser . PairContext context )
59+ private object CreatePair ( SchemeParser . DatumContext [ ] elements )
5760 {
58- var elements = context . datum ( ) . ToArray ( ) ;
5961 return AtomHelper . CreateCons ( ( ISExpression ) Visit ( elements [ 0 ] ) , ( ISExpression ) Visit ( elements [ 1 ] ) ) ;
6062 }
6163
Original file line number Diff line number Diff line change @@ -9,10 +9,6 @@ options {
99
1010// Parser rules
1111
12- datumOrPair : pair
13- | datum;
14-
15-
1612datum : simpleDatum
1713 | compoundDatum
1814 ;
@@ -25,14 +21,15 @@ simpleDatum : bool
2521 ;
2622
2723compoundDatum : list
24+ | pair
2825 | vector
2926 | quote
3027 | abbreviation
3128 ;
3229
33- list : ' (' datumOrPair * ' )' ;
30+ list : ' (' datum * ' )' ;
3431
35- pair : datum ' .' datum;
32+ pair : ' ( ' datum ' .' datum ' ) ' ;
3633
3734bool : TRUE # True
3835 | FALSE # False
You can’t perform that action at this time.
0 commit comments