Skip to content

Commit

Permalink
[refactor] Get rid of core/meta.py
Browse files Browse the repository at this point in the history
- Simplify the list of Python source files that goes into bin/osh_eval
  • Loading branch information
Andy Chu committed Jun 22, 2020
1 parent 881409c commit a3152ec
Show file tree
Hide file tree
Showing 12 changed files with 33 additions and 56 deletions.
5 changes: 2 additions & 3 deletions bin/oil.py
Expand Up @@ -53,7 +53,6 @@ def _tlog(msg):
from core import alloc
from core import error
from core import main_loop
from core import meta
from core import shell
from core import optview
from core import pure
Expand Down Expand Up @@ -136,7 +135,7 @@ def OshCommandMain(argv):
aliases = {} # Dummy value; not respecting aliases!

loader = pyutil.GetResourceLoader()
oil_grammar = meta.LoadOilGrammar(loader)
oil_grammar = pyutil.LoadOilGrammar(loader)

opt_array = [False] * option_i.ARRAY_SIZE
parse_opts = optview.Parse(opt_array)
Expand Down Expand Up @@ -214,7 +213,7 @@ def TeaMain(argv):
aliases = {} # Dummy value; not respecting aliases!

loader = pyutil.GetResourceLoader()
oil_grammar = meta.LoadOilGrammar(loader)
oil_grammar = pyutil.LoadOilGrammar(loader)

# Not used in tea, but OK...
opt_array = [False] * option_i.ARRAY_SIZE
Expand Down
3 changes: 1 addition & 2 deletions bin/osh_parse.py
Expand Up @@ -13,7 +13,6 @@
from core import error
from core import optview
#from core import main_loop
from core import meta
from core import pyutil
from core.pyerror import log
from core import ui
Expand Down Expand Up @@ -63,7 +62,7 @@ def main(argv):
oil_grammar = None # type: Grammar
if mylib.PYTHON:
loader = pyutil.GetResourceLoader()
oil_grammar = meta.LoadOilGrammar(loader)
oil_grammar = pyutil.LoadOilGrammar(loader)

parse_ctx = parse_lib.ParseContext(arena, parse_opts, aliases, oil_grammar)

Expand Down
38 changes: 16 additions & 22 deletions build/mycpp.sh
Expand Up @@ -285,6 +285,21 @@ all-variants() {

readonly TMP=_tmp/mycpp

osh-eval-manifest() {
# _devbuild is ASDL stuff
# frontend metaprogramming: */*_def.py
# core/process.py - not ready
# pyutil.py -- Python only (Resource Loader, etc.)
# os_path.py: crashes on path += '/' + b
# pgen2/parse.py: prefer hand-written C

# TODO: could be pyoptview,pyconsts,pymatch,pyflag

local exclude='_devbuild/|.*_def\.py|core/py.*\.py|pybase.py|optview.py|match.py|process.py|os_path.py|path_stat.py|bool_stat.py|consts.py|pgen2/parse.py|oil_lang/objects.py|flag_spec.py|builtin_process.py'

egrep -v "$exclude" types/osh-eval-manifest.txt
}

osh-eval() {
### Translate bin/osh_eval.py

Expand All @@ -301,33 +316,12 @@ osh-eval() {
#if false; then
if true; then
# relies on splitting
# _devbuild is ASDL stuff
# frontend metaprogramming:
# lexer_def.py
# match.py is cpp/
# id_kind_def.py
# core/meta.py
# core/process.py - not ready
# pyutil.py -- Python only (Resource Loader, etc.)
# core/util.py -- not ready
# os_path.py: crashes on path += '/' + b
# pgen2/parse.py: prefer hand-written C

local exclude='_devbuild/|pybase.py|optview.py|option_def.py|id_kind_def.py|match.py|lexer_def.py|/meta.py|pretty.py|process.py|pyerror.py|pyos.py|pyutil.py|os_path.py|path_stat.py|bool_stat.py|builtin_def.py|consts.py|pgen2/parse.py|oil_lang/objects.py|flag_spec.py|flag_def.py|builtin_process.py'

# TODO: Should we have a --header-file option?
# And then list the classes and functions that have to be exported
# or a regex
#
# ColorOutput|_Action
# Or the modules like asdl_runtime.h

mycpp \
--header-out $h \
--to-header frontend.args \
--to-header asdl.runtime \
--to-header asdl.format \
$(egrep -v "$exclude" types/osh-eval-manifest.txt) > $raw
$(osh-eval-manifest) > $raw
fi

cpp-skeleton $name $raw > $cc
Expand Down
19 changes: 0 additions & 19 deletions core/meta.py

This file was deleted.

2 changes: 1 addition & 1 deletion core/pure.py
Expand Up @@ -220,7 +220,7 @@ def Main(lang, arg_r, environ, login_shell, loader, line_input):
aliases = {} # type: Dict[str, str]

oil_grammar = None # type: grammar.Grammar
#oil_grammar = meta.LoadOilGrammar(loader)
#oil_grammar = pyutil.LoadOilGrammar(loader)

if flag.one_pass_parse and not exec_opts.noexec():
e_usage('--one-pass-parse requires noexec (-n)')
Expand Down
9 changes: 9 additions & 0 deletions core/pyutil.py
Expand Up @@ -8,6 +8,7 @@
import zipimport # NOT the zipfile module.

from mycpp import mylib
from pgen2 import grammar
from pylib import os_path

import posix_ as posix
Expand Down Expand Up @@ -57,6 +58,14 @@ def strerror_OS(e):
return posix.strerror(e.errno)


def LoadOilGrammar(loader):
# type: (_ResourceLoader) -> grammar.Grammar
oil_grammar = grammar.Grammar()
contents = loader.Get('_devbuild/gen/grammar.marshal')
oil_grammar.loads(contents)
return oil_grammar


class _ResourceLoader(object):

def Get(self, rel_path):
Expand Down
3 changes: 1 addition & 2 deletions core/shell.py
Expand Up @@ -20,7 +20,6 @@
from core import executor
from core import completion
from core import main_loop
from core import meta
from core import pyos
from core import process
from core import pure
Expand Down Expand Up @@ -348,7 +347,7 @@ def Main(lang, arg_r, environ, login_shell, loader, line_input):
# feedback between runtime and parser
aliases = {} # type: Dict[str, str]

oil_grammar = meta.LoadOilGrammar(loader)
oil_grammar = pyutil.LoadOilGrammar(loader)

if flag.one_pass_parse and not exec_opts.noexec():
raise error.Usage('--one-pass-parse requires noexec (-n)')
Expand Down
3 changes: 1 addition & 2 deletions core/test_lib.py
Expand Up @@ -22,7 +22,6 @@
from core import dev
from core import executor
from core import main_loop
from core import meta
from core import optview
from core import process
from core import pyutil
Expand Down Expand Up @@ -280,7 +279,7 @@ def InitWordParser(word_str, oil_at=False, arena=None):
parse_opts = optview.Parse(opt_array)
opt_array[option_i.parse_at] = oil_at
loader = pyutil.GetResourceLoader()
oil_grammar = meta.LoadOilGrammar(loader)
oil_grammar = pyutil.LoadOilGrammar(loader)
parse_ctx = parse_lib.ParseContext(arena, parse_opts, {}, oil_grammar)
line_reader, _ = InitLexer(word_str, arena)
c_parser = parse_ctx.MakeOshParser(line_reader)
Expand Down
2 changes: 1 addition & 1 deletion frontend/consts.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python2
"""
lookup.py
consts.py
"""
from __future__ import print_function

Expand Down
1 change: 0 additions & 1 deletion frontend/parse_lib.py
Expand Up @@ -9,7 +9,6 @@
from _devbuild.gen.types_asdl import lex_mode_e
from _devbuild.gen import grammar_nt

from core import meta
from core.pyerror import p_die
from frontend import lexer
from frontend import reader
Expand Down
3 changes: 1 addition & 2 deletions oil_lang/expr_parse_test.py
Expand Up @@ -11,7 +11,6 @@

from core import alloc
from core import error
from core import meta
from core import pyutil
from core import test_lib
from core.pyerror import log
Expand All @@ -26,7 +25,7 @@ def setUp(self):
self.arena.PushSource(source.Unused(''))

loader = pyutil.GetResourceLoader()
oil_grammar = meta.LoadOilGrammar(loader)
oil_grammar = pyutil.LoadOilGrammar(loader)

self.parse_ctx = test_lib.InitParseContext(arena=self.arena,
oil_grammar=oil_grammar)
Expand Down
1 change: 0 additions & 1 deletion types/osh-eval-manifest.txt
Expand Up @@ -7,7 +7,6 @@
./core/dev.py
./core/error.py
./core/main_loop.py
./core/meta.py
./core/optview.py
./core/pure.py
./core/pyerror.py
Expand Down

0 comments on commit a3152ec

Please sign in to comment.