• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • C
          • Syntax-for-tools
            • Formalized-subset
            • Mapping-to-language-definition
            • Input-files
            • Compilation-database
            • Printer
            • Output-files
            • Abstract-syntax-operations
            • Implementation-environments
            • Abstract-syntax
            • Concrete-syntax
            • Disambiguation
            • Validation
            • Gcc-builtins
            • Preprocessing
              • Preprocessor
                • Pproc
                • Preprocessor-states
                • Preprocessor-printer
                • Pread-token/newline
                • Pread-token
                • Pproc-files
                • Preprocessor-lexer
                • Pproc-file
                • Pproc-group-part
                  • Pproc-*-group-part
                  • Pproc-directive
                  • *pproc-files-max*
                  • String-plexeme-list-alist-to-filepath-filedata-map
                  • String-plexeme-list-alist
                  • Read-input-file-to-preproc
                  • Preprocessor-reader
                  • Preprocessor-messages
                • External-preprocessing
              • Parsing
            • Atc
            • Transformation-tools
            • Language
            • Representation
            • Insertion-sort
            • Pack
          • Soft
          • Bv
          • Imp-language
          • Ethereum
          • Event-macros
          • Java
          • Riscv
          • Bitcoin
          • Zcash
          • Yul
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Axe
          • Lists-light
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Preprocessor
    • Pproc

    Pproc-group-part

    Preprocess a group part.

    Signature
    (pproc-group-part path file preprocessed 
                      preprocessing rev-lexemes ppstate state) 
     
      → 
    (mv erp new-rev-lexemes new-ppstate new-preprocessed state)
    Arguments
    path — Guard (stringp path).
    file — Guard (stringp file).
    preprocessed — Guard (string-plexeme-list-alistp preprocessed).
    preprocessing — Guard (string-listp preprocessing).
    rev-lexemes — Guard (plexeme-listp rev-lexemes).
    ppstate — Guard (ppstatep ppstate).
    Returns
    new-rev-lexemes — Type (plexeme-listp new-rev-lexemes).
    new-ppstate — Type (ppstatep new-ppstate), given (ppstatep ppstate).
    new-preprocessed — Type (string-plexeme-list-alistp new-preprocessed).

    We read the next token or newline, skipping over whitespace and comments. If we find no token or newline, it is an error, because it means that the file has some whitespace or comments without a terminating newline; this function is called (by pproc-*-group-part) only if we are not at the end of file.

    If we find a newline, it means that we have a text line (see grammar) without tokens. In this case we have finished the group part and we return all the lexemes.

    If we find a hash, we have a directive; otherwise, we have a text line with tokens.