Token.hs revision 03802967de9e47e40051919e56673a41dc2434d8
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian MaederModule : $Header$
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian MaederDescription : parser for CASL 'Id's based on "Common.Lexer"
54ed6a6b1a6c7d27fadb39ec5b59d0806c81f7c8Christian MaederCopyright : (c) Christian Maeder and Uni Bremen 2002-2004
75a6279dbae159d018ef812185416cf6df386c10Till MossakowskiLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
75a6279dbae159d018ef812185416cf6df386c10Till MossakowskiMaintainer : Christian.Maeder@dfki.de
75a6279dbae159d018ef812185416cf6df386c10Till MossakowskiStability : provisional
f66fcd981f556c238df7dd6dfa42123745e3b1d2Christian MaederPortability : portable
dda5ab793f1615c1ba1dcaa97a4346b0878da6b1Christian MaederParser for CASL 'Id's based on "Common.Lexer"
dda5ab793f1615c1ba1dcaa97a4346b0878da6b1Christian Maeder from 25 March 2001
f66fcd981f556c238df7dd6dfa42123745e3b1d2Christian Maeder C.2.1 Basic Specifications with Subsorts
0799b5dc3f06d2640e66e9ab54b8b217348fd719Christian MaederSIMPLE-ID ::= WORDS
0799b5dc3f06d2640e66e9ab54b8b217348fd719Christian MaederID ::= TOKEN-ID | MIXFIX-ID
43b4c41fbb07705c9df321221ab9cb9832460407Christian MaederTOKEN-ID ::= TOKEN
4c8d3c5a9e938633f6147b5a595b9b93bfca99e6Christian MaederMIXFIX-ID ::= TOKEN-ID PLACE-TOKEN-ID ... PLACE-TOKEN-ID
fbc4f8708092d571a45cb483f37cc6b674da45a7Christian Maeder | PLACE-TOKEN-ID ... PLACE-TOKEN-ID
fbc4f8708092d571a45cb483f37cc6b674da45a7Christian MaederPLACE-TOKEN-ID ::= PLACE TOKEN-ID
f77f29e84b3f6e791c82e61b13fbf76582bedd2fChristian MaederTOKEN ::= WORDS | DOT-WORDS | DIGIT | QUOTED-CHAR
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyer SIGNS are adapted here and more permissive as in the summary
f77f29e84b3f6e791c82e61b13fbf76582bedd2fChristian Maeder WORDS and NO-BRACKET-SIGNS are treated equally
f66fcd981f556c238df7dd6dfa42123745e3b1d2Christian Maeder legal are, ie. "{a}", "{+}", "a{}="
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder illegal is "a=" (no two SIMPLE-TOKEN stay beside each other)
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder SIMPLE-TOKEN ::= WORDS | DOT-WORDS | DIGIT | QUOTED-CHAR
6352f3c31da3043783a13be6594aacb2147378baRazvan Pascanu | NO-BRACKET-SIGNS
fc1a590cd3ee36797c0a032ff41e07f8e2469341Christian Maeder STB ::= SIMPLE-TOKEN BRACKETS
a2b04db3e156312a8596d8084f7f0f51acf8a96bChristian Maeder BST ::= BRACKETS SIMPLE-TOKEN
66a774f13272fde036481edd2298081ab3d04678Razvan Pascanu SIGNS ::= BRACKETS
834c2e71b8e390e5b05c8d02bb6eb22621125133Markus Gross | BRACKETS STB ... STB
d27b1887e61f1dc53d77c37f59dbf5019242a686Christian Maeder | BRACKETS STB ... STB SIMPLE-TOKEN
d27b1887e61f1dc53d77c37f59dbf5019242a686Christian Maeder | SIMPLE-TOKEN
d27b1887e61f1dc53d77c37f59dbf5019242a686Christian Maeder | SIMPLE-TOKEN BST ... BST
6e52f1dfc0da4bc4a7701cf856641c9dce08fc7dChristian Maeder | SIMPLE-TOKEN BST ... BST BRACKETS
9f85afecbd79b3df5a0bb17bd28cd0b288dc3213Kristina Sojakova A SIMPLE-TOKEN followed by "[" outside nested brackets
63da71bfb4226f504944b293fb77177ebcaea7d4Ewaryst Schulz will be taken as the beginning of a compound list.
e1ea9a046e9640148ca876dfe47e391559a9fdf3Christian Maeder Within SIGNS brackets need not be balanced,
14c89b2d830777bf4db2850f038c9f60acaca486Christian Maeder only after their composition to a MIXFIX-ID.
57026bc09337d158b89775048a9bcc9c17d825caChristian Maeder BRACKETS = BRACKET ... BRACKET
57026bc09337d158b89775048a9bcc9c17d825caChristian Maeder BRACKET ::= [ | ] | { | }
e1ea9a046e9640148ca876dfe47e391559a9fdf3Christian Maeder 2.4 Identifiers
923e25bb8c7cf9f2978c7844ad173704482cc3b0Martin Kühl brackets/braces within MIXFIX-ID must be balanced
2b873214c9ab511bbca437c036371ab664aedaceChristian Maeder C.2.2 Structured Specifications
d27b1887e61f1dc53d77c37f59dbf5019242a686Christian Maeder TOKEN-ID ::= ... | TOKEN [ ID ,..., ID ]
d27b1887e61f1dc53d77c37f59dbf5019242a686Christian Maeder A compound list must follow the last TOKEN within MIXFIX-ID,
834c2e71b8e390e5b05c8d02bb6eb22621125133Markus Gross so a compound list is never nested within (balanced) mixfix BRACKETS.
8ef91a173e69219fc2ebd45c76a35891c7785abdMarkus Gross Only PLACEs may follow a compound list.
8ef91a173e69219fc2ebd45c76a35891c7785abdMarkus Gross The IDs within the compound list may surely be compound IDs again.
57026bc09337d158b89775048a9bcc9c17d825caChristian Maeder-- * Casl keyword lists
22b772f8753f0cdb4508ba460356c238de2ee375Jonathan von Schroeder-- | reserved signs
fa388aea9cef5f9734fec346159899a74432ce26Christian Maedercasl_reserved_ops :: [String]
63719301448519453f66383f4e583d9fd5b89ecbChristian Maedercasl_reserved_ops = [colonS, colonQuMark, defnS, dotS, cDot, mapsTo]
fc1a590cd3ee36797c0a032ff41e07f8e2469341Christian Maeder-- | these formula signs are legal in terms, but illegal in declarations
fc1a590cd3ee36797c0a032ff41e07f8e2469341Christian Maederformula_ops :: [String]
923e25bb8c7cf9f2978c7844ad173704482cc3b0Martin Kühlformula_ops = [equalS, implS, equivS, lOr, lAnd, negS]
72079df98b3cb7cc1fd82a0a24984893dcd05ecaEwaryst Schulz-- | all reseverd signs
a461314c811f4187dff85c8be079a41b2f13f176Christian Maedercasl_reserved_fops :: [String]
a3a7d8b3cdf05c8040c62dbcf9a15dc5042cd721Christian Maedercasl_reserved_fops = formula_ops ++ casl_reserved_ops
8a77240a809197c92c0736c431b4b88947a7bac1Christian Maeder-- | reserved keywords
8a77240a809197c92c0736c431b4b88947a7bac1Christian Maedercasl_basic_reserved_words :: [String]
fbc4f8708092d571a45cb483f37cc6b674da45a7Christian Maedercasl_basic_reserved_words =
8ef91a173e69219fc2ebd45c76a35891c7785abdMarkus Gross [axiomS, axiomS ++ sS, cogeneratedS, cotypeS, cotypeS ++ sS,
8ef91a173e69219fc2ebd45c76a35891c7785abdMarkus Gross esortS, esortS ++ sS, etypeS, etypeS ++ sS,
8ef91a173e69219fc2ebd45c76a35891c7785abdMarkus Gross existsS, forallS, freeS, generatedS,
f77f29e84b3f6e791c82e61b13fbf76582bedd2fChristian Maeder opS, opS ++ sS, predS, predS ++ sS,
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyer sortS, sortS ++ sS, typeS, typeS ++ sS, varS, varS ++ sS]
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyer-- | reserved keywords
f1dec6898638ba1131a9fadbc4d1544c93dfabb0Klaus Luettichcasl_structured_reserved_words :: [String]
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyercasl_structured_reserved_words =
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyer [andS, archS, behaviourallyS, closedS, cofreeS, endS,
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyer fitS, freeS, fromS, getS, givenS,
d56ece59c372cb887355825901222b9f3377f7e6Thiemo Wiedemeyer hideS, lambdaS, libraryS, localS, logicS, newlogicS,
f77f29e84b3f6e791c82e61b13fbf76582bedd2fChristian Maeder refinedS, refinementS,
-- | like 'varId'. 'Common.Id.SIMPLE_ID' for spec- and view names