OILS / demo / houston-fp / demo_main.py View on Github | oilshell.org

59 lines, 20 significant
1#!/usr/bin/env python2
2from __future__ import print_function
3"""
4houston-fp demo
5"""
6
7import sys
8
9from demo_asdl import Token, expr_t, word_part_t, value, value_t
10
11from typing import List, Optional, cast
12
13
14def main(argv):
15 # type: (List[str]) -> None
16
17 # Better example:
18 #
19 # 1. Lexer() returning Token
20 # 2. Mututally recursive parsers storing Token as first class variants:
21 # WordParser
22 # ArithParser
23 # BoolParser
24 # ExprParser
25 #
26 # 3. Evaluators using Token
27 #
28 # 4. Errors bubbled up to top-level, using Token
29 #
30 # ...
31 #
32 # TypeScript example: https://github.com/oilshell/yaks
33
34 tok = Token(3, 4, 5, 'foo')
35 print(tok)
36
37 val = None # type: Optional[value_t]
38 ival = value.Int(42)
39
40 val = ival
41
42 my_word_part = None # type: Optional[word_part_t]
43 my_expr = None # type: Optional[expr_t]
44
45 my_word_part = tok
46 my_expr = tok
47
48 # Errors
49 #my_word_part = val
50
51 #val = tok
52
53
54if __name__ == '__main__':
55 try:
56 main(sys.argv)
57 except RuntimeError as e:
58 print('FATAL: %s' % e, file=sys.stderr)
59 sys.exit(1)