Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/src/frontend/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  align_stack_comment.py   Sprache: Python

 
#!/usr/bin/python -B
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.


""" Usage: align_stack_comment.py FILE

    This script aligns the stack transition comment in BytecodeEmitter and
    its helper classes.

    The stack transition comment looks like the following:
      //        [stack] VAL1 VAL2 VAL3
"""

import re
import sys

# The column index of '[' of '[stack]'
ALIGNMENT_COLUMN = 20

# The maximum column for comment
MAX_CHARS_PER_LINE = 80

stack_comment_pat = re.compile(r"^( *//) *(\[stack\].*)$")


def align_stack_comment(path):
    lines = []
    changed = False

    with open(path) as f:
        max_head_len = 0
        max_comment_len = 0

        line_num = 0

        for line in f:
            line_num += 1
            # Python includes \n in lines.
            line = line.rstrip("\n")

            m = stack_comment_pat.search(line)
            if m:
                head = m.group(1) + " "
                head_len = len(head)
                comment = m.group(2)
                comment_len = len(comment)

                if head_len > ALIGNMENT_COLUMN:
                    print(
                        "Warning: line {} overflows from alignment column {}: {}".format(
                            line_num, ALIGNMENT_COLUMN, head_len
                        ),
                        file=sys.stderr,
                    )

                line_len = max(head_len, ALIGNMENT_COLUMN) + comment_len
                if line_len > MAX_CHARS_PER_LINE:
                    print(
                        "Warning: line {} overflows from {} chars: {}".format(
                            line_num, MAX_CHARS_PER_LINE, line_len
                        ),
                        file=sys.stderr,
                    )

                max_head_len = max(max_head_len, head_len)
                max_comment_len = max(max_comment_len, comment_len)

                spaces = max(ALIGNMENT_COLUMN - head_len, 0)
                formatted = head + " " * spaces + comment

                if formatted != line:
                    changed = True

                lines.append(formatted)
            else:
                lines.append(line)

        print(
            "Info: Minimum column number for [stack]: {}".format(max_head_len),
            file=sys.stderr,
        )
        print(
            "Info: Alignment column number for [stack]: {}".format(ALIGNMENT_COLUMN),
            file=sys.stderr,
        )
        print(
            "Info: Max length of stack transition comments: {}".format(max_comment_len),
            file=sys.stderr,
        )

    if changed:
        with open(path, "w"as f:
            for line in lines:
                print(line, file=f)
    else:
        print("No change.")


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: align_stack_comment.py FILE", file=sys.stderr)
        sys.exit(1)

    for path in sys.argv[1:]:
        print(path)
        align_stack_comment(path)

Messung V0.5
C=90 H=94 G=91

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.