Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Jeff A;</p> <p>Take a look at the GNU Cobol parsing code at <a href="http://sourceforge.net/p/open-cobol/code/HEAD/tree/trunk/gnu-cobol/cobc" rel="nofollow">http://sourceforge.net/p/open-cobol/code/HEAD/tree/trunk/gnu-cobol/cobc</a> say starting with <a href="http://sourceforge.net/p/open-cobol/code/HEAD/tree/trunk/gnu-cobol/cobc/scanner.l" rel="nofollow">http://sourceforge.net/p/open-cobol/code/HEAD/tree/trunk/gnu-cobol/cobc/scanner.l</a></p> <p>That directory, especially the .l lexical files contain some of the regular expressions, but with supporting context of the formal grammar when combined with the .y bison files.</p> <p>Or, for quicker immediate feedback, try the Koopa Cobol Parser, at <a href="http://koopa.sourceforge.net/" rel="nofollow">http://koopa.sourceforge.net/</a> ships as a .jar.</p> <p>Or, for a poor man's view, the Pygments COBOL syntax highlighter at bitbucket.org under Pygments/lexers/compiled.py</p> <pre><code>class CobolLexer(RegexLexer): """ Lexer for GNU Cobol code. *New in Pygments 1.6.* """ name = 'COBOL' aliases = ['cobol'] filenames = ['*.cob', '*.COB', '*.cpy', '*.CPY'] mimetypes = ['text/x-cobol'] flags = re.IGNORECASE | re.MULTILINE # Data Types: by PICTURE and USAGE # Operators: **, *, +, -, /, &lt;, &gt;, &lt;=, &gt;=, =, &lt;&gt; # Logical (?): NOT, AND, OR # Reserved words: # http://opencobol.add1tocobol.com/gnucobol/#reserved-words # Intrinsics: # http://opencobol.add1tocobol.com/gnucobol/#does-gnu-cobol-implement-any-intrinsic-functions tokens = { 'root': [ include('comment'), include('strings'), include('core'), include('nums'), (r'[a-z0-9]([_a-z0-9\-]*[a-z0-9]+)?', Name.Variable), # (r'[\s]+', Text), (r'[ \t]+', Text), ], 'comment': [ (r'(^.{6}[*/].*\n|^.{6}|\*&gt;.*\n)', Comment), ], 'core': [ # Figurative constants #(r'(^|(?&lt;=[^0-9a-z_\-]))(ALL\s+)?' (r'\b(?!-)(ALL\s+)?' r'((ZEROES)|(HIGH-VALUE|LOW-VALUE|NULL|QUOTE|SPACE|ZERO)(S)?)' r'\b(?!-)', #r'\s*($|(?=[^0-9a-z_\-]))', Name.Constant), # Reserved words STATEMENTS and other bolds #(r'(^|(?&lt;=[^0-9a-z_\-]))' (r'\b(?!-)' r'(ACCEPT|ADD|ALLOCATE|CALL|CANCEL|CLOSE|COMPUTE|' r'CONFIGURATION|CONTINUE|' r'DATA|DELETE|DISPLAY|DIVIDE|DIVISION|ELSE|END|END-ACCEPT|' r'END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DISPLAY|' r'END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|' r'END-PERFORM|END-READ|END-RETURN|END-REWRITE|END-SEARCH|' r'END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|' r'ENVIRONMENT|EVALUATE|EXIT|FD|FILE|FILE-CONTROL|FOREVER|' r'FREE|FUNCTION-ID|GENERATE|GO|GOBACK|' r'IDENTIFICATION|IF|INITIALIZE|' r'INITIATE|INPUT-OUTPUT|INSPECT|INVOKE|I-O-CONTROL|LINKAGE|' r'LOCAL-STORAGE|MERGE|MOVE|MULTIPLY|OPEN|' r'PERFORM|PROCEDURE|PROGRAM-ID|RAISE|READ|RELEASE|RESUME|' r'RETURN|REWRITE|SCREEN|' r'SD|SEARCH|SECTION|SET|SORT|START|STOP|STRING|SUBTRACT|' r'SUPPRESS|TERMINATE|THEN|UNLOCK|UNSTRING|USE|VALIDATE|' r'WORKING-STORAGE|WRITE)' r'\b(?!-)', Keyword.Reserved), #r'\s*($|(?=[^0-9a-z_\-]))', Keyword.Reserved), # Reserved words #(r'(^|(?&lt;=[^0-9a-z_\-]))' (r'\b(?!-)' r'(ACCESS|ADDRESS|ADVANCING|AFTER|ALL|' r'ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|' r'ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|' r'ANY|ARE|AREA|AREAS|ARGUMENT-NUMBER|ARGUMENT-VALUE|AS|' r'ASCENDING|ASSIGN|AT|AUTO|AUTO-SKIP|AUTOMATIC|AUTOTERMINATE|' r'BACKGROUND-COLOR|BASED|BEEP|BEFORE|BELL|' r'BLANK|' r'BLINK|BLOCK|BOTTOM|BY|BYTE-LENGTH|CHAINING|' r'CHARACTER|CHARACTERS|CLASS|CODE|CODE-SET|COL|COLLATING|' r'COLS|COLUMN|COLUMNS|COMMA|COMMAND-LINE|COMMIT|COMMON|' r'CONSTANT|CONTAINS|CONTENT|CONTROL|' r'CONTROLS|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRT|' r'CURRENCY|CURSOR|CYCLE|DATE|DAY|DAY-OF-WEEK|DE|DEBUGGING|' r'DECIMAL-POINT|DECLARATIVES|DEFAULT|DELIMITED|' r'DELIMITER|DEPENDING|DESCENDING|DETAIL|DISK|' r'DOWN|DUPLICATES|DYNAMIC|EBCDIC|' r'ENTRY|ENVIRONMENT-NAME|ENVIRONMENT-VALUE|EOL|EOP|' r'EOS|ERASE|ERROR|ESCAPE|EXCEPTION|' r'EXCLUSIVE|EXTEND|EXTERNAL|' r'FILE-ID|FILLER|FINAL|FIRST|FIXED|' r'FOOTING|FOR|FOREGROUND-COLOR|FORMAT|FROM|FULL|FUNCTION|' r'GIVING|GLOBAL|GROUP|' r'HEADING|HIGHLIGHT|I-O|ID|' r'IGNORE|IGNORING|IN|INDEX|INDEXED|INDICATE|' r'INITIAL|INITIALIZED|INPUT|' r'INTO|INTRINSIC|INVALID|IS|JUST|JUSTIFIED|' r'KEY|KEYBOARD|LABEL|' r'LAST|LEADING|LEFT|LENGTH|LIMIT|LIMITS|LINAGE|' r'LINAGE-COUNTER|LINE|LINES|LOCALE|LOCK|' r'LOWLIGHT|MANUAL|MEMORY|MINUS|MODE|' r'MULTIPLE|NATIONAL|NATIONAL-EDITED|NATIVE|' r'NEGATIVE|NEXT|NO|NUMBER|NUMBERS|NUMERIC|' r'NUMERIC-EDITED|OBJECT-COMPUTER|OCCURS|OF|OFF|OMITTED|ON|ONLY|' r'OPTIONAL|ORDER|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|' r'OVERLINE|PACKED-DECIMAL|PADDING|PAGE|PARAGRAPH|' r'PLUS|POSITION|POSITIVE|PRESENT|PREVIOUS|' r'PRINTER|PRINTING|PROCEDURES|' r'PROCEED|PROGRAM|PROMPT|QUOTE|' r'QUOTES|RANDOM|RD|RECORD|RECORDING|RECORDS|RECURSIVE|' r'REDEFINES|REEL|REFERENCE|RELATIVE|REMAINDER|REMOVAL|' r'RENAMES|REPLACING|REPORT|REPORTING|REPORTS|REPOSITORY|' r'REQUIRED|RESERVE|RETURNING|REVERSE-VIDEO|REWIND|' r'RIGHT|ROLLBACK|ROUNDED|RUN|SAME|SCROLL|' r'SECURE|SEGMENT-LIMIT|SELECT|SENTENCE|SEPARATE|' r'SEQUENCE|SEQUENTIAL|SHARING|SIGN|SIGNED|SIGNED-INT|' r'SIGNED-LONG|SIGNED-SHORT|SIZE|SORT-MERGE|SOURCE|' r'SOURCE-COMPUTER|SPECIAL-NAMES|STANDARD|' r'STANDARD-1|STANDARD-2|STATUS|SUM|' r'SYMBOLIC|SYNC|SYNCHRONIZED|TALLYING|TAPE|' r'TEST|THROUGH|THRU|TIME|TIMES|TO|TOP|TRAILING|' r'TRANSFORM|TYPE|UNDERLINE|UNIT|UNSIGNED|' r'UNSIGNED-INT|UNSIGNED-LONG|UNSIGNED-SHORT|UNTIL|UP|' r'UPDATE|UPON|USAGE|USING|VALUE|VALUES|VARYING|WAIT|WHEN|' r'WITH|WORDS|YYYYDDD|YYYYMMDD)' r'\b(?!-)', Keyword.Pseudo), #r'\s*($|(?=[^0-9a-z_\-]))', Keyword.Pseudo), # inactive reserved words #(r'(^|(?&lt;=[^0-9a-z_\-]))' (r'\b(?!-)' r'(ACTIVE-CLASS|ALIGNED|ANYCASE|ARITHMETIC|ATTRIBUTE|B-AND|' r'B-NOT|B-OR|B-XOR|BIT|BOOLEAN|CD|CENTER|CF|CH|CHAIN|CLASS-ID|' r'CLASSIFICATION|COMMUNICATION|CONDITION|DATA-POINTER|' r'DESTINATION|DISABLE|EC|EGI|EMI|ENABLE|END-RECEIVE|' r'ENTRY-CONVENTION|EO|ESI|EXCEPTION-OBJECT|EXPANDS|FACTORY|' r'FLOAT-BINARY-16|FLOAT-BINARY-34|FLOAT-BINARY-7|' r'FORMAT|' r'GET|GROUP-USAGE|IMPLEMENTS|INFINITY|' r'INHERITS|INTERFACE|INTERFACE-ID|INVOKE|LC_ALL|LC_COLLATE|' r'LC_CTYPE|LC_MESSAGES|LC_MONETARY|LC_NUMERIC|LC_TIME|' r'LINE-COUNTER|MESSAGE|METHOD|METHOD-ID|NESTED|NONE|NORMAL|' r'OBJECT|OBJECT-REFERENCE|OPTIONS|OVERRIDE|PAGE-COUNTER|PF|PH|' r'PROPERTY|PROTOTYPE|PURGE|QUEUE|RAISE|RAISING|RECEIVE|' r'RELATION|REPLACE|REPRESENTS-NOT-A-NUMBER|RESET|RESUME|RETRY|' r'RF|RH|SECONDS|SEGMENT|SELF|SEND|SOURCES|STATEMENT|STEP|' r'STRONG|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUPER|SYMBOL|' r'SYSTEM-DEFAULT|TABLE|TERMINAL|TEXT|TYPEDEF|UCS-4|UNIVERSAL|' r'USER-DEFAULT|UTF-16|UTF-8|VAL-STATUS|VALID|VALIDATE|' r'VALIDATE-STATUS)\b(?!-)', Comment), #r'VALIDATE-STATUS)\s*($|(?=[^0-9a-z_\-]))', Comment), # Data Types (r'(^|(?&lt;=[^0-9a-z_\-]))' #(r'\b(?!-)' r'(PIC\s+.+?(?=(\s|\.\s))|PICTURE\s+.+?(?=(\s|\.\s))|' r'(COMPUTATIONAL)(-[1-5X])?|(COMP)(-[1-5X])?|' r'BINARY-C-LONG|POINTER|PROGRAM-POINTER|' r'FUNCTION-POINTER|PROCEDURE-POINTER|' r'BINARY-CHAR|BINARY-DOUBLE|BINARY-LONG|BINARY-SHORT|' r'FLOAT-SHORT|FLOAT-LONG|FLOAT-DECIMAL-16|FLOAT-DECIMAL-34|' r'FLOAT-BINARY-32|FLOAT-BINARY-64|FLOAT-BINARY-128|' r'FLOAT-EXTENDED|FLOAT-DECIMAL-7|' # r'BINARY)\b(?!-)', Keyword.Type), r'BINARY)\s*($|(?=[^0-9a-z_\-]))', Keyword.Type), # Operators (r'(\*\*|\*|\+|-|/|&lt;=|&gt;=|&lt;|&gt;|==|/=|=)', Operator), # (r'(::)', Keyword.Declaration), (r'([(),;:&amp;%.])', Punctuation), # Intrinsics #(r'(^|(?&lt;=[^0-9a-z_\-]))(ABS|ACOS|ANNUITY|ASIN|ATAN|BYTE-LENGTH|' (r'\b(?!-)(ABS|ACOS|ANNUITY|ASIN|ATAN|BYTE-LENGTH|' r'CHAR|COMBINED-DATETIME|CONCATENATE|COS|CURRENT-DATE|' r'DATE-OF-INTEGER|DATE-TO-YYYYMMDD|DAY-OF-INTEGER|DAY-TO-YYYYDDD|' r'EXCEPTION-(?:FILE|LOCATION|STATEMENT|STATUS)|EXP10|EXP|E|' r'FACTORIAL|FRACTION-PART|INTEGER-OF-(?:DATE|DAY|PART)|INTEGER|' r'LENGTH|LOCALE-(?:DATE|TIME(?:-FROM-SECONDS)?)|LOG10|LOG|' r'LOWER-CASE|MAX|MEAN|MEDIAN|MIDRANGE|MIN|MOD|NUMVAL(?:-C)?|' r'ORD(?:-MAX|-MIN)?|PI|PRESENT-VALUE|RANDOM|RANGE|REM|REVERSE|' r'SECONDS-FROM-FORMATTED-TIME|SECONDS-PAST-MIDNIGHT|SIGN|SIN|SQRT|' r'STANDARD-DEVIATION|STORED-CHAR-LENGTH|SUBSTITUTE(?:-CASE)?|' r'SUM|TAN|TEST-DATE-YYYYMMDD|TEST-DAY-YYYYDDD|TRIM|' r'UPPER-CASE|VARIANCE|WHEN-COMPILED|YEAR-TO-YYYY)' r'\b(?!-)', Name.Function), #r'UPPER-CASE|VARIANCE|WHEN-COMPILED|YEAR-TO-YYYY)\s*' #r'($|(?=[^0-9a-z_\-]))', Name.Function), # Booleans #(r'(^|(?&lt;=[^0-9a-z_\-]))(true|false)\s*($|(?=[^0-9a-z_\-]))', Name.Builtin), (r'\b(?!-)(true|false)\b(?!-)', Name.Builtin), # Comparing Operators #(r'(^|(?&lt;=[^0-9a-z_\-]))(equal|equals|ne|lt|le|gt|ge|' # r'greater|less|than|not|and|or)\s*($|(?=[^0-9a-z_\-]))', Operator.Word), (r'\b(?!-)(equal|equals|ne|lt|le|gt|ge|' r'greater|less|than|not|and|or)\b(?!-)', Operator.Word), ], # \"[^\"\n]*\"|\'[^\'\n]*\' 'strings': [ # apparently strings can be delimited by EOL if they are continued # in the next line (r'"[^"\n]*("|\n)', String.Double), (r"'[^'\n]*('|\n)", String.Single), ], 'nums': [ #(r'\d+(\s+|\.$|$)', Number.Integer), (r'\b(?!-)\d+\b(?!-)', Number.Integer), (r'[+-]?\d*\.\d+([eE][-+]?\d+)?', Number.Float), (r'[+-]?\d+\.\d*([eE][-+]?\d+)?', Number.Float), ], } class CobolFreeformatLexer(CobolLexer): """ Lexer for Free format OpenCOBOL code. *New in Pygments 1.6.* """ name = 'COBOLFree' aliases = ['cobolfree'] filenames = ['*.cbl', '*.CBL'] mimetypes = [] flags = re.IGNORECASE | re.MULTILINE tokens = { 'comment': [ (r'(\*&gt;.*\n|^\w*\*.*$)', Comment), ], } </code></pre> <p>Excuse the dead code comments, getting rid of quite a few backtracking pattern matches, still in testing and not committed to bitbucket just yet. And this is just for pretty colours in source listings, <em>sans intelligence or correctness</em>.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload