Category:Bracmat: Difference between revisions
(Add language template, linkify) |
(Added text explaining the origin of flags,) |
||
Line 4: | Line 4: | ||
Bracmat's strength is [[pattern matching]], in strings as well as in tree structures. |
Bracmat's strength is [[pattern matching]], in strings as well as in tree structures. |
||
Bracmat is inspired by [[SNOBOL]] (pattern matching, success/failure), by [[Lisp]] (Bracmat programs are made of the same stuff as Bracmat data), by [[Prolog]] (backtracking) and a little bit by [[object-oriented]] languages. |
Bracmat is inspired by [[SNOBOL]] (pattern matching, success/failure), by [[Lisp]] (Bracmat programs are made of the same stuff as Bracmat data), by [[Prolog]] (backtracking) and a little bit by [[object-oriented]] languages. The first implementation was for an ARM based computer. The ARM processor's 4-bit condition code selector on every instruction were the inspiration for Bracmat's flags ~ [ ! !! ` @ % > < # / ? that can be set on any node in an expression. For example, the ! and ? flags turn a symbol into a variable. When flags are combined, care has been taken that the semantics of a combination of flags is close to a combination of the semantics of each flag. |
||
The Bracmat-interpreter is written in Standard [[C]] and can be compiled for many platforms, such as Epoc, [[Windows]], [[Mac OS]], [[Linux]] and [[Unix]]. The compiled code measures about 130 KB (statically linked), depending on the platform. The runtime is not very memory hungry, as compared to e.g. [[Java]]. |
The Bracmat-interpreter is written in Standard [[C]] and can be compiled for many platforms, such as Epoc, [[Windows]], [[Mac OS]], [[Linux]] and [[Unix]]. The compiled code measures about 130 KB (statically linked), depending on the platform. The runtime is not very memory hungry, as compared to e.g. [[Java]]. |
Revision as of 12:31, 7 February 2012
This programming language may be used to instruct a computer to perform a task.
Execution method: | Interpreted |
---|---|
See Also: |
|
Bracmat is an interpreted programming language that is developed by Bart Jongejan, starting in 1986. Originally it was designed as a Computer Algebra system, but it has shown its merits in natural language processing as well. Bracmat has been used in the field of General Relativity for the algebraic computation of Ricci tensors from given space-time metrics, for the implementation of a dialogue-manager in virtual world project that allowed a user to communicate with software agents in plain English and with gestures, for the analysis of texts in a "Controlled Language"-project and for automatic error correction of hundreds of HTML pages. Bracmat has also shown its utility in some real-world applications: for example to identify persons, companies etc. in pre-tagged texts that must be anonymised. The to date most advanced application of Bracmat is as workflow planner and executor. Instead of letting the user choose between software tools, which the user may not know very well, the planner asks the user to specify what kind of output she wants. With this information the planner computes all (not necessarily sequential) combinations of tools and their parameter settings that combine into workflows that are guaranteed to produce the specified output from the given input. The computed list is condensed into a short format that highlights the differences between the workflows for the user and leaves out all that is of less importance.
Bracmat's strength is pattern matching, in strings as well as in tree structures.
Bracmat is inspired by SNOBOL (pattern matching, success/failure), by Lisp (Bracmat programs are made of the same stuff as Bracmat data), by Prolog (backtracking) and a little bit by object-oriented languages. The first implementation was for an ARM based computer. The ARM processor's 4-bit condition code selector on every instruction were the inspiration for Bracmat's flags ~ [ ! !! ` @ % > < # / ? that can be set on any node in an expression. For example, the ! and ? flags turn a symbol into a variable. When flags are combined, care has been taken that the semantics of a combination of flags is close to a combination of the semantics of each flag.
The Bracmat-interpreter is written in Standard C and can be compiled for many platforms, such as Epoc, Windows, Mac OS, Linux and Unix. The compiled code measures about 130 KB (statically linked), depending on the platform. The runtime is not very memory hungry, as compared to e.g. Java.
Subcategories
This category has the following 3 subcategories, out of 3 total.
@
- Bracmat examples needing attention (empty)
- Bracmat Implementations (empty)
- Bracmat User (3 P)
Pages in category "Bracmat"
The following 105 pages are in this category, out of 305 total.
(previous page) (next page)R
- Range expansion
- Range extraction
- Read a file line by line
- Read entire file
- Real constants and functions
- Regular expressions
- Remove duplicate elements
- Rename a file
- Rep-string
- Repeat a string
- Return multiple values
- Reverse a string
- Reverse words in a string
- Riordan numbers
- Roman numerals/Decode
- Roman numerals/Encode
- Rosetta Code/Count examples
- Rosetta Code/Rank languages by popularity
- Run-length encoding
- Runtime evaluation/In an environment
S
- Sailors, coconuts and a monkey problem
- Same fringe
- Scope modifiers
- Search a list
- Semiprime
- Semordnilap
- Send an unknown method call
- Set consolidation
- Shell one-liner
- Short-circuit evaluation
- Sieve of Eratosthenes
- Simple database
- Singly-linked list/Element definition
- Solve a Hidato puzzle
- Solve a Holy Knight's tour
- Sort an array of composite structures
- Sort an integer array
- Sort disjoint sublist
- Sorting algorithms/Quicksort
- Special characters
- Special variables
- Stable marriage problem
- Stack
- State name puzzle
- String append
- String case
- String comparison
- String concatenation
- String interpolation (included)
- String length
- String matching
- String prepend
- Strip a set of characters from a string
- Strip comments from a string
- Strip control codes and extended characters from a string
- Strip whitespace from a string/Top and tail
- Substring
- Substring/Top and tail
- Subtractive generator
- Sudoku
- Sum and product of an array
- Sum of a series
- Sum of squares
- Summarize and say sequence
- Symmetric difference
T
- Temperature conversion
- Terminal control/Clear the screen
- Terminal control/Display an extended character
- Terminal control/Ringing the terminal bell
- Text processing/Max licenses in use
- The Twelve Days of Christmas
- Time a function
- Tokenize a string
- Top rank per group
- Topological sort
- Towers of Hanoi
- Tree traversal
- Truncatable primes
- Truncate a file
- Twelve statements