Skip to content

Commit b987de9

Browse files
committed
change grammar of imports
1 parent eb1da38 commit b987de9

File tree

4 files changed

+40
-39
lines changed

4 files changed

+40
-39
lines changed

part1-zilch.tex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,9 @@ \section{Modules}\label{sec:zilch-grammar-modules}
617617

618618
\scalebox{.5}{
619619
\includegraphics{zilch/modules/import}
620+
}\\
621+
\scalebox{.5}{
622+
\includegraphics{zilch/modules/import-group}
620623
}
621624

622625
\caption{Grammar for import statements.}

railroad-diagrams.py

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -420,55 +420,53 @@ def zilch_integer():
420420

421421
return mk_diagram2('integer', inner)
422422

423+
423424
def zilch_function_type():
424425
inner = Sequence(
425426
Choice(
426-
1,
427-
NonTerminal('atomic-type'),
428-
Sequence(
429-
Terminal('('),
430-
ZeroOrMore(
431-
NonTerminal('type'),
432-
Terminal(',')
433-
),
434-
Terminal(')')
435-
)
436-
),
437-
HorizontalChoice(
438-
Terminal('->'),
439-
Terminal('→')
440-
),
441-
Choice(
442-
1,
443-
Skip(),
444-
NonTerminal('identifier'),
445-
NonTerminal('effect-row')
446-
),
447-
NonTerminal('type')
448-
)
427+
1, NonTerminal('atomic-type'),
428+
Sequence(Terminal('('), ZeroOrMore(NonTerminal('type'), Terminal(',')),
429+
Terminal(')'))), HorizontalChoice(Terminal('->'),
430+
Terminal('→')),
431+
Choice(1, Skip(), NonTerminal('identifier'), NonTerminal('effect-row')),
432+
NonTerminal('type'))
449433

450434
return mk_diagram2('function-type', inner)
451435

436+
452437
def zilch_effect_row():
453438
inner = Sequence(
454-
Terminal('<'),
455-
ZeroOrMore(
456-
NonTerminal('type'),
457-
Terminal(',')
458-
),
439+
Terminal('<'), ZeroOrMore(NonTerminal('type'), Terminal(',')),
459440
Optional(
460-
Sequence(
461-
Terminal('|'),
462-
OneOrMore(
463-
NonTerminal('identifier'),
464-
Terminal(',')
465-
)
466-
)
467-
),
468-
Terminal('>')
469-
)
441+
Sequence(Terminal('|'),
442+
OneOrMore(NonTerminal('identifier'), Terminal(',')))),
443+
Terminal('>'))
470444

471445
return mk_diagram2('effect-row', inner)
472446

473447

474-
zilch_effect_row().writeSvg(sys.stdout.write)
448+
def zilch_import():
449+
inner = Stack(
450+
Sequence(Optional(Terminal('open')), Terminal('import'),
451+
OneOrMore(NonTerminal('identifier'), Terminal('::'))),
452+
Sequence(
453+
Optional(Sequence(Terminal('as'), NonTerminal('identifier'))),
454+
Optional(
455+
Sequence(Terminal('('), NonTerminal('module-import-group'),
456+
Terminal(')')))))
457+
458+
return mk_diagram2('module-import', inner)
459+
460+
461+
def zilch_import_group():
462+
inner = ZeroOrMore(
463+
Sequence(
464+
Choice(2, Terminal('class'), Terminal('module'), Terminal('effect'),
465+
Skip()), NonTerminal('identifier'),
466+
Optional(Sequence(Terminal('as'), NonTerminal('identifier')))),
467+
Terminal(','))
468+
469+
return mk_diagram2('module-import-group', inner)
470+
471+
472+
zilch_import().writeSvg(sys.stdout.write)

res/zilch/modules/import-group.png

16.6 KB
Loading

res/zilch/modules/import.png

-9.71 KB
Loading

0 commit comments

Comments
 (0)