summaryrefslogtreecommitdiffstats
path: root/Tools/c-analyzer
diff options
context:
space:
mode:
authorNikita Sobolev <mail@sobolevn.me>2023-03-22 14:59:32 (GMT)
committerGitHub <noreply@github.com>2023-03-22 14:59:32 (GMT)
commit1ca315538f2f9da6c7b86c4c46e76d454c1ec4b9 (patch)
tree29dd93839c113c31081b10a23efaefa97f2c1a6d /Tools/c-analyzer
parent7559f5fda94ab568a1a910b17683ed81dc3426fb (diff)
downloadcpython-1ca315538f2f9da6c7b86c4c46e76d454c1ec4b9.zip
cpython-1ca315538f2f9da6c7b86c4c46e76d454c1ec4b9.tar.gz
cpython-1ca315538f2f9da6c7b86c4c46e76d454c1ec4b9.tar.bz2
gh-102033: Fix syntax error in `Tools/c-analyzer` (GH-102066)
The easiest way to format strings with `{}` meaningful chars is via `%`.
Diffstat (limited to 'Tools/c-analyzer')
-rw-r--r--Tools/c-analyzer/c_analyzer/__main__.py2
-rw-r--r--Tools/c-analyzer/c_analyzer/info.py4
-rw-r--r--Tools/c-analyzer/c_common/info.py0
-rw-r--r--Tools/c-analyzer/c_common/iterutil.py4
-rw-r--r--Tools/c-analyzer/c_common/show.py0
-rw-r--r--Tools/c-analyzer/c_parser/__main__.py4
-rw-r--r--Tools/c-analyzer/c_parser/_state_machine.py244
-rw-r--r--Tools/c-analyzer/c_parser/info.py3
-rw-r--r--Tools/c-analyzer/c_parser/parser/_alt.py6
-rw-r--r--Tools/c-analyzer/c_parser/parser/_delim.py54
-rw-r--r--Tools/c-analyzer/c_parser/parser/_global.py1
-rw-r--r--Tools/c-analyzer/cpython/__main__.py2
-rw-r--r--Tools/c-analyzer/cpython/_analyzer.py4
-rw-r--r--Tools/c-analyzer/cpython/_capi.py10
14 files changed, 3 insertions, 335 deletions
diff --git a/Tools/c-analyzer/c_analyzer/__main__.py b/Tools/c-analyzer/c_analyzer/__main__.py
index 5d89b29..cde39bc 100644
--- a/Tools/c-analyzer/c_analyzer/__main__.py
+++ b/Tools/c-analyzer/c_analyzer/__main__.py
@@ -18,10 +18,8 @@ from c_common.scriptutil import (
configure_logger,
get_prog,
filter_filenames,
- iter_marks,
)
from c_parser.info import KIND
-from c_parser.match import is_type_decl
from .match import filter_forward
from . import (
analyze as _analyze,
diff --git a/Tools/c-analyzer/c_analyzer/info.py b/Tools/c-analyzer/c_analyzer/info.py
index 27c3a5a..d231e07 100644
--- a/Tools/c-analyzer/c_analyzer/info.py
+++ b/Tools/c-analyzer/c_analyzer/info.py
@@ -1,4 +1,3 @@
-from collections import namedtuple
import os.path
from c_common import fsutil
@@ -13,9 +12,6 @@ from c_parser.info import (
from c_parser.match import (
is_type_decl,
)
-from .match import (
- is_process_global,
-)
IGNORED = _misc.Labeled('IGNORED')
diff --git a/Tools/c-analyzer/c_common/info.py b/Tools/c-analyzer/c_common/info.py
deleted file mode 100644
index e69de29..0000000
--- a/Tools/c-analyzer/c_common/info.py
+++ /dev/null
diff --git a/Tools/c-analyzer/c_common/iterutil.py b/Tools/c-analyzer/c_common/iterutil.py
index 6ded105..dda3dd5 100644
--- a/Tools/c-analyzer/c_common/iterutil.py
+++ b/Tools/c-analyzer/c_common/iterutil.py
@@ -1,7 +1,3 @@
-
-_NOT_SET = object()
-
-
def peek_and_iter(items):
if not items:
return None, None
diff --git a/Tools/c-analyzer/c_common/show.py b/Tools/c-analyzer/c_common/show.py
deleted file mode 100644
index e69de29..0000000
--- a/Tools/c-analyzer/c_common/show.py
+++ /dev/null
diff --git a/Tools/c-analyzer/c_parser/__main__.py b/Tools/c-analyzer/c_parser/__main__.py
index 78f47a1..2454fcb 100644
--- a/Tools/c-analyzer/c_parser/__main__.py
+++ b/Tools/c-analyzer/c_parser/__main__.py
@@ -1,10 +1,7 @@
import logging
-import os.path
import sys
-from c_common import fsutil
from c_common.scriptutil import (
- CLIArgSpec as Arg,
add_verbosity_cli,
add_traceback_cli,
add_kind_filtering_cli,
@@ -15,7 +12,6 @@ from c_common.scriptutil import (
get_prog,
main_for_filenames,
)
-from .preprocessor import get_preprocessor
from .preprocessor.__main__ import (
add_common_cli as add_preprocessor_cli,
)
diff --git a/Tools/c-analyzer/c_parser/_state_machine.py b/Tools/c-analyzer/c_parser/_state_machine.py
deleted file mode 100644
index 8753231..0000000
--- a/Tools/c-analyzer/c_parser/_state_machine.py
+++ /dev/null
@@ -1,244 +0,0 @@
-
-f'''
- struct {ANON_IDENTIFIER};
- struct {{ ... }}
- struct {IDENTIFIER} {{ ... }}
-
- union {ANON_IDENTIFIER};
- union {{ ... }}
- union {IDENTIFIER} {{ ... }}
-
- enum {ANON_IDENTIFIER};
- enum {{ ... }}
- enum {IDENTIFIER} {{ ... }}
-
- typedef {VARTYPE} {IDENTIFIER};
- typedef {IDENTIFIER};
- typedef {IDENTIFIER};
- typedef {IDENTIFIER};
-'''
-
-
-def parse(srclines):
- if isinstance(srclines, str): # a filename
- raise NotImplementedError
-
-
-
-# This only handles at most 10 nested levels.
-#MATCHED_PARENS = textwrap.dedent(rf'''
-# # matched parens
-# (?:
-# [(] # level 0
-# (?:
-# [^()]*
-# [(] # level 1
-# (?:
-# [^()]*
-# [(] # level 2
-# (?:
-# [^()]*
-# [(] # level 3
-# (?:
-# [^()]*
-# [(] # level 4
-# (?:
-# [^()]*
-# [(] # level 5
-# (?:
-# [^()]*
-# [(] # level 6
-# (?:
-# [^()]*
-# [(] # level 7
-# (?:
-# [^()]*
-# [(] # level 8
-# (?:
-# [^()]*
-# [(] # level 9
-# (?:
-# [^()]*
-# [(] # level 10
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )*
-# [^()]*
-# [)]
-# )
-# # end matched parens
-# ''')
-
-r'''
- # for loop
- (?:
- \s* \b for
- \s* [(]
- (
- [^;]* ;
- [^;]* ;
- .*?
- ) # <header>
- [)]
- \s*
- (?:
- (?:
- (
- {_ind(SIMPLE_STMT, 6)}
- ) # <stmt>
- ;
- )
- |
- ( {{ ) # <open>
- )
- )
- |
-
-
-
- (
- (?:
- (?:
- (?:
- {_ind(SIMPLE_STMT, 6)}
- )?
- return \b \s*
- {_ind(INITIALIZER, 5)}
- )
- |
- (?:
- (?:
- {IDENTIFIER} \s*
- (?: . | -> ) \s*
- )*
- {IDENTIFIER}
- \s* = \s*
- {_ind(INITIALIZER, 5)}
- )
- |
- (?:
- {_ind(SIMPLE_STMT, 5)}
- )
- )
- |
- # cast compound literal
- (?:
- (?:
- [^'"{{}};]*
- {_ind(STRING_LITERAL, 5)}
- )*
- [^'"{{}};]*?
- [^'"{{}};=]
- =
- \s* [(] [^)]* [)]
- \s* {{ [^;]* }}
- )
- ) # <stmt>
-
-
-
- # compound statement
- (?:
- (
- (?:
-
- # "for" statements are handled separately above.
- (?: (?: else \s+ )? if | switch | while ) \s*
- {_ind(COMPOUND_HEAD, 5)}
- )
- |
- (?: else | do )
- # We do not worry about compound statements for labels,
- # "case", or "default".
- )? # <header>
- \s*
- ( {{ ) # <open>
- )
-
-
-
- (
- (?:
- [^'"{{}};]*
- {_ind(STRING_LITERAL, 5)}
- )*
- [^'"{{}};]*
- # Presumably we will not see "== {{".
- [^\s='"{{}};]
- )? # <header>
-
-
-
- (
- \b
- (?:
- # We don't worry about labels with a compound statement.
- (?:
- switch \s* [(] [^{{]* [)]
- )
- |
- (?:
- case \b \s* [^:]+ [:]
- )
- |
- (?:
- default \s* [:]
- )
- |
- (?:
- do
- )
- |
- (?:
- while \s* [(] [^{{]* [)]
- )
- |
- #(?:
- # for \s* [(] [^{{]* [)]
- # )
- #|
- (?:
- if \s* [(]
- (?: [^{{]* [^)] \s* {{ )* [^{{]*
- [)]
- )
- |
- (?:
- else
- (?:
- \s*
- if \s* [(]
- (?: [^{{]* [^)] \s* {{ )* [^{{]*
- [)]
- )?
- )
- )
- )? # <header>
-'''
diff --git a/Tools/c-analyzer/c_parser/info.py b/Tools/c-analyzer/c_parser/info.py
index 3fa9fef..799f923 100644
--- a/Tools/c-analyzer/c_parser/info.py
+++ b/Tools/c-analyzer/c_parser/info.py
@@ -1,6 +1,5 @@
from collections import namedtuple
import enum
-import os.path
import re
from c_common import fsutil
@@ -8,7 +7,7 @@ from c_common.clsutil import classonly
import c_common.misc as _misc
import c_common.strutil as _strutil
import c_common.tables as _tables
-from .parser._regexes import SIMPLE_TYPE, _STORAGE
+from .parser._regexes import _STORAGE
FIXED_TYPE = _misc.Labeled('FIXED_TYPE')
diff --git a/Tools/c-analyzer/c_parser/parser/_alt.py b/Tools/c-analyzer/c_parser/parser/_alt.py
deleted file mode 100644
index 05a9101..0000000
--- a/Tools/c-analyzer/c_parser/parser/_alt.py
+++ /dev/null
@@ -1,6 +0,0 @@
-
-def _parse(srclines, anon_name):
- text = ' '.join(l for _, l in srclines)
-
- from ._delim import parse
- yield from parse(text, anon_name)
diff --git a/Tools/c-analyzer/c_parser/parser/_delim.py b/Tools/c-analyzer/c_parser/parser/_delim.py
deleted file mode 100644
index 51433a6..0000000
--- a/Tools/c-analyzer/c_parser/parser/_delim.py
+++ /dev/null
@@ -1,54 +0,0 @@
-import re
-import textwrap
-
-from ._regexes import _ind, STRING_LITERAL
-
-
-def parse(text, anon_name):
- context = None
- data = None
- for m in DELIMITER_RE.find_iter(text):
- before, opened, closed = m.groups()
- delim = opened or closed
-
- handle_segment = HANDLERS[context][delim]
- result, context, data = handle_segment(before, delim, data)
- if result:
- yield result
-
-
-DELIMITER = textwrap.dedent(rf'''
- (
- (?:
- [^'"()\[\]{};]*
- {_ind(STRING_LITERAL, 3)}
- }*
- [^'"()\[\]{};]+
- )? # <before>
- (?:
- (
- [(\[{]
- ) # <open>
- |
- (
- [)\]};]
- ) # <close>
- )?
- ''')
-DELIMITER_RE = re.compile(DELIMITER, re.VERBOSE)
-
-_HANDLERS = {
- None: { # global
- # opened
- '{': ...,
- '[': None,
- '(': None,
- # closed
- '}': None,
- ']': None,
- ')': None,
- ';': ...,
- },
- '': {
- },
-}
diff --git a/Tools/c-analyzer/c_parser/parser/_global.py b/Tools/c-analyzer/c_parser/parser/_global.py
index 35947c1..b1ac9f5 100644
--- a/Tools/c-analyzer/c_parser/parser/_global.py
+++ b/Tools/c-analyzer/c_parser/parser/_global.py
@@ -9,7 +9,6 @@ from ._common import (
set_capture_groups,
)
from ._compound_decl_body import DECL_BODY_PARSERS
-#from ._func_body import parse_function_body
from ._func_body import parse_function_statics as parse_function_body
diff --git a/Tools/c-analyzer/cpython/__main__.py b/Tools/c-analyzer/cpython/__main__.py
index fe7a167..ec026c6 100644
--- a/Tools/c-analyzer/cpython/__main__.py
+++ b/Tools/c-analyzer/cpython/__main__.py
@@ -2,7 +2,6 @@ import logging
import sys
import textwrap
-from c_common.fsutil import expand_filenames, iter_files_by_suffix
from c_common.scriptutil import (
VERBOSITY,
add_verbosity_cli,
@@ -11,7 +10,6 @@ from c_common.scriptutil import (
add_kind_filtering_cli,
add_files_cli,
add_progress_cli,
- main_for_filenames,
process_args_by_key,
configure_logger,
get_prog,
diff --git a/Tools/c-analyzer/cpython/_analyzer.py b/Tools/c-analyzer/cpython/_analyzer.py
index cfe5e75..68d6b31 100644
--- a/Tools/c-analyzer/cpython/_analyzer.py
+++ b/Tools/c-analyzer/cpython/_analyzer.py
@@ -4,16 +4,12 @@ import re
from c_common.clsutil import classonly
from c_parser.info import (
KIND,
- DeclID,
Declaration,
TypeDeclaration,
- TypeDef,
- Struct,
Member,
FIXED_TYPE,
)
from c_parser.match import (
- is_type_decl,
is_pots,
is_funcptr,
)
diff --git a/Tools/c-analyzer/cpython/_capi.py b/Tools/c-analyzer/cpython/_capi.py
index df8159a..4552f71 100644
--- a/Tools/c-analyzer/cpython/_capi.py
+++ b/Tools/c-analyzer/cpython/_capi.py
@@ -7,7 +7,7 @@ import textwrap
from c_common.tables import build_table, resolve_columns
from c_parser.parser._regexes import _ind
-from ._files import iter_header_files, resolve_filename
+from ._files import iter_header_files
from . import REPO_ROOT
@@ -610,8 +610,7 @@ def _render_item_full(item, groupby, verbose):
yield item.name
yield f' {"filename:":10} {item.relfile}'
for extra in ('kind', 'level'):
- #if groupby != extra:
- yield f' {extra+":":10} {getattr(item, extra)}'
+ yield f' {extra+":":10} {getattr(item, extra)}'
if verbose:
print(' ---------------------------------------')
for lno, line in enumerate(item.text, item.lno):
@@ -636,7 +635,6 @@ def render_summary(items, *,
subtotals = summary['totals']['subs']
bygroup = summary['totals']['bygroup']
- lastempty = False
for outer, subtotal in subtotals.items():
if bygroup:
subtotal = f'({subtotal})'
@@ -646,10 +644,6 @@ def render_summary(items, *,
if outer in bygroup:
for inner, count in bygroup[outer].items():
yield f' {inner + ":":9} {count}'
- lastempty = False
- else:
- lastempty = True
-
total = f'*{summary["totals"]["all"]}*'
label = '*total*:'
if bygroup: