background preloader

Building & Disambiguating Rules

Facebook Twitter

Ragel State Machine Compiler. Ragel compiles executable finite state machines from regular languages.

Ragel State Machine Compiler

Ragel targets C, C++, Obj-C, C#, D, Java, Go and Ruby. Ragel state machines can not only recognize byte sequences as regular expression machines do, but can also execute code at arbitrary points in the recognition of a regular language. Code embedding is done using inline operators that do not disrupt the regular language syntax. The core language consists of standard regular expression operators (such as union, concatenation and Kleene star) and action embedding operators. The user’s regular expressions are compiled to a deterministic state machine and the embedded actions are associated with the transitions of the machine. Ragel also provides operators that let you control any non-determinism that you create, construct scanners, and build state machines using a statechart model.

Ragel code looks like: .. and it compiles to: … and it visualizes as: What kind of task is Ragel good for? Features Download. Ragel. Overview[edit] The graph represents a state-machine that takes user input as a series of bytes representing ASCII characters and control codes. 48..57 is equivalent to the regular expression [0-9] (i.e. any digit), so only sequences beginning with a digit can be recognised.

Ragel

If 10 (line feed) is encountered, we're done. 46 is the decimal point ('.'), 43 and 45 are positive and negative signs ('+', '-') and 69/101 is uppercase/lowercase 'e' (to indicate a number in scientific format). PLY (Python Lex-Yacc) Welcome to the PLY homepage.

PLY (Python Lex-Yacc)

PLY is an implementation of lex and yacc parsing tools for Python. If you don't have the slightest idea what that means, you're probably in the wrong place. Otherwise, keep reading. ML-Yacc User's Manual Version 2.4. David R.

ML-Yacc User's Manual Version 2.4

Tarditi1Andrew W. Appel2 1 Microsoft Research 2Department of Computer SciencePrinceton University April 24, 2000 (c) 1989, 1990, 1991,1994 Andrew W. This software comes with ABSOLUTELY NO WARRANTY. New in version 2.3: Improved error correction directive %change that allows multi-token insertions, deletions, substitutions. New in version 2.4: Explanation of how to build a parser (Section 5) and the Calc example (Section 7) revised for SML/NJ Version 110 and the use of CM. Flex: The Fast Lexical Analyzer. Free/open-source machine translation systems and tools. Open Translation Tools.

The field of machine translation (MT) is many decades old, and in fact dates back to the early days of the computer industry.

Open Translation Tools

In this chapter, an overview is provided of how machine translation systems function, the use of machine translation and its limitations. The basic concept of machine translation is to automatically translate a source text in one language into another language. As there are hundreds of widely spoken languages, the number of potential language pairs is astronomical. For this reason, machine translation systems tend to focus on a relatively small number of "high traffic" language pairs where there is demand for translation, such as English to French, French to German, etc. The demand for translation, not surprisingly, roughly mirrors major world trade routes. Fortunately, machine translation solves a big problem for governments, world trade, etc. and as such has received a considerable amount of funding over the past several decades. Generator. SQL::Generator - Generate SQL-statements with oo-perl use SQL::Generator; With this module you can easily (and very flexible) generate/construct sql-statements.

Generator

As a rookie, you are used to write a lot of sprintf`s every time i needed a statement (i.e.for DBI). Later you start writing your own functions for every statement and every sql-dialect (RDBMS use to have their own dialect extending the general SQL standard). This SQL::Generator module is an approach to have a flexible abstraction above the statement generation, which makes it easy to implement in your perl code.

QueryBuilder. SQL::QueryBuilder::Pretty - Perl extension to beautify SQL.

QueryBuilder

Version 0.01 use SQL::QueryBuilder::Pretty; my $pretty = SQL::QueryBuilder::Pretty->new( '-indent_ammount' => 4, '-indent_char' => ' ', '-new_line' => "\n", ); print $pretty->print('SELECT * FROM table WHERE col1 = NOW()'); The main goal of this Module was not the beautify mechanism, wich is allready well implemented in SQL::Beautify, but to provide a easy way to add new SQL languages, and related rules, in a modular and independent fashion.

Mikeaddison93/raco. TAPoR - Search by Tag Disambiguation. Yacc: Yet Another Compiler-Compiler. The Lex & Yacc Page Stephen C.

Yacc: Yet Another Compiler-Compiler

Johnson AT&T Bell Laboratories Murray Hill, New Jersey 07974 Computer program input generally has some structure; in fact, every computer program that does input can be thought of as defining an ``input language'' which it accepts. An input language may be as complex as a programming language, or as simple as a sequence of numbers. Unfortunately, usual input facilities are limited, difficult to use, and often are lax about checking their inputs for validity. Yacc provides a general tool for describing the input to a computer program. Developing a Disambiguator - LanguageTool Wiki. A disambiguator might be used for a language in case when the tagger creates many interpretations for a token and rules get very complex because of the same set of exceptions used everywhere to disambiguate part-of-speech tags.

Developing a Disambiguator - LanguageTool Wiki

The disambiguator might be rule-based, as it is for French or English, or it can implement a completely different scheme (statistical). Note that you cannot simply adapt existing disambiguators, even rule-based, as they are used to make taggers robust. Robustness means that good taggers should ignore small grammatical problems when tagging. However, we want to recognize them rather than hide from linguistic processing. P84 1102. Disambiguating RDF Identifiers. Status 2002-12: In working on some WebArch issues, I think I have had some insight into one of RDF's persistent problems.

Disambiguating RDF Identifiers

This is a completely-unofficial note in which I try to share the insight and suggest some possible actions. I think RDF Core adopting and promoting this view could significantly increase successful deployment of RDF. 2003-05: The time for this proposal has passed. It was an interesting idea, but it was hard to implement, and there are probably better solutions to the problems mentioned here (esp 303 redirects). 2014-04: I don't regret much in life, but looking back over the years, I do regret not pushing this proposal a lot harder, back when RDF (2004) was going to Last Call. Summary To date, RDF has not been clear about whether a URI like " identifies the W3C or a web page about the W3C. I propose we officially recognize this ambiguity. The changes to the current draft RDF documents should be small. Disambiguating rules. Yacc uses ``disambiguating rules'' so that it can produce a parser when shift-reduce or reduce-reduce conflicts occur.

The two default disambiguating rules are: