# Cobol language definition
# to be tested, I don't know anything about cobol

comment start '^[[:blank:]]*\*'

keyword = "accept|access|add|advancing|after|all|alphabet|alphabetic|alphabetic-lower|alphabetic-upper",
"alphanumeric|alphanumeric-edited|also|alter|alternate|and|any|are|area|areas|ascending|assign|at|author",
"before|binary|blank|block|bottom|by|call|cancel|cd|cf|ch|character|characters|class|clock-units",
"close|cobol|code|code-set|collating|column|comma|common|communication|comp|comp-0|comp-1|comp-2|comp-3",
"comp-4|comp-5|comp-6|comp-x|computational|computational-0|computational-1|computational-2|computational-3",
"computational-4|computational-5|computational-6|computational-x|compute|configuration|contains|content|continue",
"control|control-area|controls|converting|copy|corr|corresponding|count|currency|data|date|date-compiled",
"date-written|day|day-of-week|de|debug-contents|debug-item|debug-line|debug-name|debug-sub-1|debug-sub-2|debug-sub-3",
"debugging|decimal-point|declaratives|delete|delimited|delimiter|depending|descending|destination|detail|disable",
"display|divide|division|down|duplicates|dynamic|egi|else|emi|enable|end|end-add|end-call|end-compute|end-delete",
"end-divide|end-evaluate|end-if|end-multiply|end-of-page|end-perform|end-read|end-receive|end-return|end-rewrite",
"end-search|end-start|end-string|end-subtract|end-unstring|end-write|enter|environment|eop|equal|error",
"esi|evaluate|every|exception|exit|extend|external|false|fd|file|file-control|filler|final|first",
"footing|for|from|function|generate|giving|global|go|greater|group|heading|high-value|high-values|i-o|i-o-control",
"identification|if|in|index|indexed|indicate|initial|initialize|initiate|input|input-output|inspect|installation",
"into|invalid|just|justified|key|label|last|leading|left|length|less|limit|limits|linage|linage-counter",
"line|line-counter|lines|linkage|lock|low-value|low-values|memory|merge|message|mode|modules|more-labels",
"move|multiple|multiply|native|negative|next|no|notnumber|numeric|numeric-edited|object-computer|occurs",
"of|off|omitted|on|open|optional|or|order|organization|other|output|overflow|packed-decimal|padding|page",
"page-counter|perform|pf|ph|pic|picture|plus|pointer|position|positiveprinting|procedure|procedures|proceed|program-id|program|purge|queue|quote|quotes|random|rd|read|receive|record|records|redefines|reel|reference|references|relative|release|remainder|removal|renames|replace|replacing|report|reporting|reports|rerun|reserve|returnreversed|rewind|rewrite|rf|rh|right|rounded|run|same|sd|search|section|security|segment|segment-limit|select|send|sentence|separate|sequence|sequential|set|sign|size|sort|sort-mergesource|source-computer|space|spaces|special-names|standard|standard-1|standard-2|start|status|stop|string|sub-queue-1|sub-queue-2|sub-queue-3|subtract|sum|super|suppress|symbolic|sync|synchronized|tallying|tape|terminal|terminate|test|text|than|then|through|thru|time|times|to|top|trailing|true|type|unit|unstring|until|up|upon|usage|useusing|value|valuesvarying|whenwith|words|working-storage|write|zerozeroes|zeros"
nonsensitive

include "symbols.lang"
include "c_string.lang"
include "number.lang"