Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Coco/R
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Compiler generator}} {{Use dmy dates|date=January 2020|cs1-dates=y}} {{Redir|Coco-2|the 8-bit home computer|TRS-80 Color Computer}} {{multiple issues| {{Notability|Products|date=February 2020}} {{More citations needed|date=February 2020}} }} {{Infobox software | name = Coco/R | logo = | screenshot = | caption = | author = [[Hanspeter Mössenböck]] and others | developer = | released = 2005 | latest_release_version = | latest_release_date = | programming_language = | operating system = | platform = [[Cross-platform]] | language = | genre = Parser/scanner generator | license = [[GPL2]] | website = {{URL|http://ssw.jku.at/Research/Projects/Coco/}} }} '''Coco/R''' is a [[compiler generator]] that takes [[wirth syntax notation]]{{r|name="manual"|p=6}}<ref group="note">In the manual, however, it is referred as [[L-attributed grammar|L-attributed]] [[Extended Backus–Naur Form]] syntax (EBNF).</ref> grammars of a source language and generates a scanner and a parser for that language.<ref name="manual">{{Cite web|last=Mössenböck|first=Hanspeter|last2=Kepler|first2=Johannes|title=The Compiler Generator Coco/R User Manual|url=https://ssw.jku.at/Research/Projects/Coco/Doc/UserManual.pdf|url-status=live|publisher=[[Johannes Kepler University Linz]], Institute of System Software|archive-url=https://web.archive.org/web/20120619124533/http://ssw.jku.at:80/Research/Projects/Coco/Doc/UserManual.pdf |archive-date=19 June 2012 }}</ref> The [[Lexical analysis|scanner]] works as a [[deterministic finite automaton]]. It supports [[Unicode]] characters in [[UTF-8]] encoding and can be made case-sensitive or case-insensitive. It can also recognize tokens based on their right-hand-side context. In addition to terminal symbols the scanner can also recognize [[Compiler directive|pragmas]], which are tokens that are not part of the syntax but can occur anywhere in the input stream (e.g. compiler directives or end-of-line characters). The [[parser]] uses [[recursive descent]]; [[LL parser|LL(1)]] conflicts can be resolved by either a multi-symbol lookahead or by semantic checks. Thus the class of accepted grammars is LL(k) for an arbitrary k. [[Fuzzy string searching|Fuzzy parsing]] is supported by so-called ANY symbols that match complementary sets of tokens. Semantic actions are written in the same language as the generated scanner and parser. The parser's error handling can be tuned by specifying synchronization points and "weak symbols" in the grammar. Coco/R checks the grammar for completeness, consistency, non-redundancy as well as for LL(1) conflicts. There are versions of Coco/R for [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]], [[C++]], [[Pascal (programming language)|Pascal]], [[Modula-2]], [[Modula-3]], [[Delphi (programming language)|Delphi]], [[VB.NET]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]] and other programming languages. The latest versions from the [[University of Linz]] are those for C#, Java and C++. For the Java version, there is an [[Eclipse (software)|Eclipse]] plug-in and for C#, a Visual Studio plug-in. There are also sample grammars for Java and C#. Coco/R was originally developed at the [[ETHZ]] and moved with [[Hanspeter Mössenböck]] to [[Johannes Kepler University of Linz|University of Linz]] when he got his appointment there. Coco/R is distributed under the terms of a slightly relaxed [[GNU General Public License]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)