Esta es una lista de generadores de lexers y generadores de analizadores sintácticos notables para varias clases de idiomas.
Idiomas habituales
Los lenguajes regulares son una categoría de lenguajes (a veces denominados Chomsky Tipo 3 ) que pueden ser emparejados por una máquina de estados (más específicamente, por un autómata finito determinista o un autómata finito no determinista ) construido a partir de una expresión regular . En particular, un lenguaje normal puede coincidir con construcciones como "A sigue a B", "A o B", "A, seguido de cero o más instancias de B", pero no puede coincidir con construcciones que requieran coherencia entre elementos no adyacentes, como como "algunas instancias de A seguidas por el mismo número de instancias de B", y tampoco puede expresar el concepto de "anidamiento" recursivo ("cada A es finalmente seguida por una B coincidente"). Un ejemplo clásico de un problema que una gramática normal no puede manejar es la cuestión de si una cadena dada contiene paréntesis correctamente anidados. (Esto generalmente se maneja mediante una gramática de Chomsky Tipo 2, también denominada gramática libre de contexto ).
Nombre | Algoritmo Lexer | Idiomas de salida | Gramática, código | Plataforma de desarrollo | Licencia |
---|---|---|---|---|---|
Alex | DFA | Haskell | Mezclado | Todas | Gratis, BSD |
AnnoFlex | DFA | Java | Mezclado | Máquina virtual de Java | Gratis, BSD |
En movimiento | Controlado por tabla de DFA , con ramificación | C ++ | Solo gramática (accionada) | Todas | Gratis, MIT |
AustenX | DFA | Java | Separar | Todas | Gratis, BSD |
C # Flex | DFA | C# | Mezclado | .NET CLR | Gratis, GNU GPL |
C # Lex | DFA | C# | Mezclado | .NET CLR | ? |
CookCC | DFA | Java | Mezclado | Máquina virtual de Java | Gratis, Apache 2.0 |
DFA (incluido con LRSTAR) | Matriz comprimida DFA | C ++ | Separar | Estudio visual | BSD |
Delfín | DFA | C ++ | Separar | Todas | Propiedad |
Flexionar | Controlado por tabla de DFA | C , C ++ | Mezclado | Todas | Gratis, BSD |
gelex | DFA | Eiffel | Mezclado | Eiffel | Gratis, MIT |
golex | DFA | Ir | Mezclado | Ir | Gratis, estilo BSD |
gplex | DFA | C# | Mezclado | .NET CLR | Libre, BSD -como |
JFlex | DFA | Java | Mezclado | Máquina virtual de Java | Gratis, BSD |
JLex | DFA | Java | Mezclado | Máquina virtual de Java | Libre, BSD -como |
Lex | DFA | C | Mezclado | POSIX | Parcial, patentada , CDDL |
lexertl | DFA | C ++ | ? | Todas | Gratis, GNU LGPL |
Quex | Código directo de DFA | C , C ++ | Mezclado | Todas | Gratis, GNU LGPL |
Rabia | DFA | Ir , C , C ++ , ensamblado | Mezclado | Todas | Gratis, GNU GPL , MIT [1] [2] |
Reflejo | DFA código directo, mesa de DFA impulsado, y NFA regex bibliotecas | C ++ | Mezclado | Todas | Gratis, BSD |
re2c | Código directo de DFA | C , ir | Mezclado | Todas | Libre, dominio público |
langgen (github - rmjocz / langgen) | Código directo de DFA | Java | ? | Máquina virtual de Java | Gratis, solo GPLv2 |
Lenguajes deterministas libres de contexto
Los lenguajes libres de contexto son una categoría de lenguajes (a veces denominados Chomsky Tipo 2 ) que pueden combinarse con una secuencia de reglas de reemplazo, cada una de las cuales asigna esencialmente cada elemento no terminal a una secuencia de elementos terminales y / u otros elementos no terminales. Las gramáticas de este tipo pueden coincidir con cualquier cosa que pueda coincidir con una gramática regular y, además, pueden manejar el concepto de "anidamiento" recursivo ("cada A es finalmente seguida por una B coincidente"), como la pregunta de si un determinado La cadena contiene paréntesis correctamente anidados. Sin embargo, las reglas de las gramáticas libres de contexto son puramente locales y, por lo tanto, no pueden manejar preguntas que requieran un análisis no local como "¿Existe una declaración para cada variable que se usa en una función?". Para hacerlo técnicamente, se requeriría una gramática más sofisticada, como la gramática de Chomsky Tipo 1, también denominada gramática sensible al contexto . Sin embargo, los generadores de analizadores sintácticos para gramáticas libres de contexto a menudo admiten la capacidad del código escrito por el usuario para introducir cantidades limitadas de sensibilidad al contexto. (Por ejemplo, al encontrar una declaración de variable, el código escrito por el usuario podría guardar el nombre y el tipo de la variable en una estructura de datos externa, de modo que estos se puedan comparar con referencias de variables posteriores detectadas por el analizador).
Los lenguajes libres de contexto deterministas son un subconjunto adecuado de los lenguajes libres de contexto que pueden ser analizados de manera eficiente por autómatas pushdown deterministas .
Nombre | Algoritmo de análisis | Entrada de notación gramatical | Idiomas de salida | Gramática, código | Lexer | Plataforma de desarrollo | IDE | Licencia |
---|---|---|---|---|---|---|---|---|
AGL | GLR | EBNF | Java , JavaScript , (otros destinos de Kotlin) | Separar | ninguno | Cualquier plataforma de destino de Kotlin | No | Gratis, Apache 2.0 |
ANTLR 4 | LL adaptable (*) [3] | EBNF | C # , Java , Python , JavaScript , C ++ , Swift , Go , PHP | Separar | generado | Máquina virtual de Java | sí | Gratis, BSD |
ANTLR 3 | LL (*) | EBNF | ActionScript , Ada95 , C , C ++ , C # , Java , JavaScript , Objective-C , Perl , Python , Ruby | Mezclado | generado | Máquina virtual de Java | sí | Gratis, BSD |
APG | Descenso recursivo , retroceso | ABNF | C , C ++ , JavaScript , Java | Separar | ninguno | Todas | No | Gratis, GNU GPL |
En movimiento | LL (k), LL (finito), LL (*) | Astir gramática jerárquica | C ++ | Solo gramática (accionada) | generado | Todas | Código de Visual Studio | Gratis, MIT |
HACHA | Descenso recursivo | AX / C ++ | C ++ 17 , C ++ 11 | Mezclado | ninguno | Cualquiera con el compilador estándar C ++ 17 o C ++ 11 | No | Gratis, Boost |
Castor | LALR (1) | EBNF | Java | Mezclado | externo | Máquina virtual de Java | No | Gratis, BSD |
Belr | Descenso recursivo | ABNF | C ++ 17 , C ++ 11 | Separar | incluido | POSIX | No | Parcial, GNU GPL , propietario |
Bisonte | LALR (1), LR (1), IELR (1), GLR | Yacc | C , C ++ , Java | Mezclado | externo | Todas | No | Gratis, GNU GPL con excepción |
Bison ++ [nota 1] | LALR (1) | ? | C ++ | Mezclado | externo | POSIX | No | Gratis, GNU GPL |
Bisonc ++ | LALR (1) | ? | C ++ | Mezclado | externo | POSIX | No | Gratis, GNU GPL |
BtYacc | Retroceso de abajo hacia arriba | ? | C ++ | Mezclado | externo | Todas | No | Libre, dominio público |
byacc | LALR (1) | Yacc | C | Mezclado | externo | Todas | No | Libre, dominio público |
BYACC / J | LALR (1) | Yacc | C , Java | Mezclado | externo | Todas | No | Libre, dominio público |
CL-Yacc | LALR (1) | Ceceo | Lisp común | Mezclado | externo | Todas | No | Gratis, MIT |
Coco / R | LL (1) | EBNF | C , C ++ , C # , F # , Java , Ada , Object Pascal , Delphi , Modula-2 , Oberon , Ruby , Swift , Unicon , Visual Basic .NET | Mezclado | generado | Máquina virtual Java , .NET Framework , Windows , POSIX (depende del idioma de salida) | No | Gratis, GNU GPL |
CookCC | LALR (1) | Anotaciones de Java | Java | Mezclado | generado | Máquina virtual de Java | No | Gratis, Apache 2.0 |
CppCC | LL (k) | ? | C ++ | Mezclado | generado | POSIX | No | Gratis, GNU GPL |
CSP | LR (1) | ? | C ++ | Separar | generado | POSIX | No | Gratis, Apache 2.0 |
TAZA | LALR (1) | ? | Java | Mezclado | externo | Máquina virtual de Java | No | Libre, BSD -como |
Continuar | LR (1), LALR (1) | ? | C ++ , Java | Separar | generado | Todas | No | Gratis, GNU GPL |
eli | LALR (1) | ? | C | Mezclado | generado | POSIX | No | Gratis, GNU GPL , GNU LGPL |
Esencia | LR (?) | ? | Esquema 48 | Mezclado | externo | Todas | No | Gratis, BSD |
eyapp | LALR (1) | ? | Perl | Mezclado | externo o generado | Todas | No | Libre, Artístico |
Fruncir el ceño | LALR (k) | ? | Haskell 98 | Mezclado | externo | Todas | No | Gratis, GNU GPL |
geyacc | LALR (1) | ? | Eiffel | Mezclado | externo | Todas | No | Gratis, MIT |
ORO | LALR (1) | BNF | lenguaje ensamblador x86 , ANSI C , C # , D , Java , Pascal , Object Pascal , Python , Visual Basic 6, Visual Basic .NET , Visual C ++ | Separar | generado | Ventanas | sí | Gratis, zlib modificado |
GPPG | LALR (1) | Yacc | C# | Separar | externo | Ventanas | sí | Gratis, BSD |
Grammatica | LL (k) | Dialecto BNF | C # , Java | Separar | generado | Máquina virtual de Java | No | Gratis, BSD |
HiLexed | LL (*) | EBNF o Java | Java | Separar | interno | Máquina virtual de Java | No | Gratis, GNU LGPL |
Generador Hime Parser | LALR (1), GLR | Dialecto BNF | C # , Java , óxido | Separar | generado | .NET Framework , máquina virtual Java | No | Gratis, GNU LGPL |
Hyacc | LR (1), LALR (1), LR (0) | Yacc | C | Mezclado | externo | Todas | No | Gratis, GNU GPL |
iyacc | LALR (1) | Yacc | Icono | Mezclado | externo | Todas | No | Gratis, GNU LGPL |
jacc | LALR (1) | ? | Java | Mezclado | externo | Máquina virtual de Java | No | Gratis, BSD |
JavaCC | LL (k) | EBNF | Java , C ++ , JavaScript (a través del compilador GWT ) [4] | Mezclado | generado | Máquina virtual de Java | sí | Gratis, BSD |
arrendajo | LALR (1) | Yacc | C # , Java | Mezclado | ninguno | Máquina virtual de Java | No | Gratis, BSD |
JFLAP | LL (1), LALR (1) | ? | Java | ? | ? | Máquina virtual de Java | sí | ? |
JetPAG | LL (k) | ? | C ++ | Mezclado | generado | Todas | No | Gratis, GNU GPL |
JS / CC | LALR (1) | EBNF | JavaScript , JScript , ECMAScript | Mezclado | interno | Todas | sí | Gratis, BSD |
KDevelop-PG-Qt | LL (1), retroceso , patio de maniobras | ? | C ++ | Mezclado | generado o externo | Todo, KDE | No | Gratis, GNU LGPL |
Kelbt | Retroceso LALR (1) | ? | C ++ | Mezclado | generado | POSIX | No | Gratis, GNU GPL |
kmyacc | LALR (1) | ? | C , Java , Perl , JavaScript | Mezclado | externo | Todas | No | Gratis, GNU GPL |
LALR (incluido con LRSTAR) | LALR (1) | YACC, ANTLR, EBNF | C ++ | apartado | generado | Ventanas | Estudio visual | BSD |
Lapg | LALR (1) | ? | C , C ++ , C # , Java , JavaScript | Mezclado | generado | Máquina virtual de Java | No | Gratis, GNU GPL |
Limón | LALR (1) | ? | C | Mezclado | externo | Todas | No | Libre, dominio público |
Lima | LALR (1) | ? | PHP | Mezclado | externo | Todas | No | Gratis, GNU GPL |
LISA | LR (?), LL (?), LALR (?), SLR (?) | ? | Java | Mezclado | generado | Máquina virtual de Java | sí | Libre, dominio público |
LLgen | LL (1) | ? | C | Mezclado | externo | POSIX | No | Gratis, BSD |
LLnextgen | LL (1) | ? | C | Mezclado | externo | Todas | No | Gratis, GNU GPL |
LLLPG | LL (k) + predicados sintácticos y semánticos | Similar a ANTLR | C# | Mezclado | generado (?) | .NET Framework , Mono | Estudio visual | Gratis, GNU LGPL |
GLP | Retroceso de LALR (k) | ? | Java | Mezclado | generado | Máquina virtual de Java | No | Gratis, EPL |
LRSTAR | LALR (*), LR (*) | YACC, ANTLR, EBNF | C ++ | apartado | generado | Ventanas | Estudio visual | BSD |
Menhir | LR (1) | ? | OCaml | Mezclado | generado | Todas | No | Gratis, QPL |
ML-Yacc | LALR (1) | ? | ML | Mezclado | externo | Todas | No | ? |
Mono | LR (1) | ? | Java | Separar | generado | Máquina virtual de Java | No | Gratis, GNU GPL |
Msta | LALR (k), LR (k) | YACC , EBNF | C , C ++ | Mezclado | externo o generado | POSIX , Cygwin | No | Gratis, GNU GPL |
MTP (más que analizar) | LL (1) | ? | Java | Separar | generado | Máquina virtual de Java | No | Gratis, GNU GPL |
MyParser | LL (*) | Reducción | C ++ 11 | Separar | interno | Cualquiera con el compilador estándar C ++ 11 | No | Gratis, MIT |
NLT | GLR | C # / BNF -como | C# | Mezclado | mezclado | .NET Framework | No | Gratis, MIT |
ocamlyacc | LALR (1) | ? | OCaml | Mezclado | externo | Todas | No | Gratis, QPL |
olex | LL (1) | ? | C ++ | Mezclado | generado | Todas | No | Gratis, GNU GPL |
Parsec | LL , retroceso | Haskell | Haskell | Mezclado | ninguno | Todas | No | Gratis, BSD |
Analizar :: Yapp | LALR (1) | ? | Perl | Mezclado | externo | Todas | No | Gratis, GNU GPL |
Objetos del analizador | LL (k) | ? | Java | Mezclado | ? | Máquina virtual de Java | No | Gratis, zlib |
PCCTS | LL | ? | C , C ++ | ? | ? | Todas | No | ? |
CAPA | LALR (1) | BNF | Pitón | Mezclado | generado | Todas | No | Gratis, MIT |
PlyPlus | LALR (1) | EBNF | Pitón | Separar | generado | Todas | No | Gratis, MIT |
PRECC | LL (k) | ? | C | Separar | generado | DOS , POSIX | No | Gratis, GNU GPL |
QLALR | LALR (1) | ? | C ++ | Mezclado | externo | Todas | No | Gratis, GNU GPL |
SableCC | LALR (1) | ? | C , C ++ , C # , Java , OCaml , Python | Separar | generado | Máquina virtual de Java | No | Gratis, GNU LGPL |
SLK [5] | LL (k) LR (k) LALR (k) | EBNF | C , C ++ , C # , Java , JavaScript | Separar | externo | Todas | No | SLK [6] |
ASTUTO | LALR (1) | BNF | Pitón | Mezclado | generado | Todas | No | Gratis, MIT |
SP (analizador simple) | Descenso recursivo | Pitón | Pitón | Separar | generado | Todas | No | Gratis, GNU LGPL |
Espíritu | Descenso recursivo | ? | C ++ | Mezclado | interno | Todas | No | Gratis, Boost |
Estigio | LALR (1) | ? | C , C ++ | Separar | generado | Todas | No | Gratis, GNU LGPL |
Analizador dulce | LALR (1) | ? | C ++ | Separar | generado | Ventanas | No | Gratis, zlib |
Grifo | LL (1) | ? | C ++ | Mezclado | generado | Todas | No | Gratis, GNU GPL |
TextTransformer | LL (k) | ? | C ++ | Mezclado | generado | Ventanas | sí | Propiedad |
TinyPG | LL (1) | ? | C # , Visual Basic | ? | ? | Ventanas | sí | Parcial, CPOL 1.0 |
Generador de analizador de juguetes | Descenso recursivo | ? | Pitón | Mezclado | generado | Todas | No | Gratis, GNU LGPL |
TP Yacc | LALR (1) | ? | Turbo Pascal | Mezclado | externo | Todas | sí | Gratis, GNU GPL |
Tunnel Grammar Studio | Descenso recursivo , retroceso | ABNF | C ++ | Separar | generado | Ventanas | sí | Propiedad |
UltraGram | LALR (1), LR (1), GLR | BNF | C ++, Java, C #, Visual Basic .NET | Separar | externo | Ventanas | sí | Libre, dominio público |
UniCC | LALR (1) | EBNF | C , C ++ , Python , JavaScript , JSON , XML | Mezclado | generado | POSIX | No | Gratis, BSD |
UrchinCC | LL (1) | ? | Java | ? | generado | Máquina virtual de Java | No | ? |
Ballena | LR (?), Algunas cosas conjuntivas, ver Whale Calf | ? | C ++ | Mezclado | externo | Todas | No | Propiedad |
sabio | LALR (1) | ? | C ++ , Java | Mezclado | externo | Todas | No | Gratis, GNU GPL |
Yacc AT&T / Sun | LALR (1) | Yacc | C | Mezclado | externo | POSIX | No | Gratis, CPL y CDDL |
Yacc ++ | LR (1), LALR (1) | Yacc | C ++ , C # | Mezclado | generado o externo | Todas | No | Propiedad |
Yapps | LL (1) | ? | Pitón | Mezclado | generado | Todas | No | Gratis, MIT |
yecc | LALR (1) | ? | Erlang | Separar | generado | Todas | No | Gratis, Apache 2.0 |
BNF visual | LR (1), LALR (1) | ? | C# | Separar | generado | .NET Framework | sí | Propiedad |
YooParse | LR (1), LALR (1) | ? | C ++ | Mezclado | externo | Todas | No | Gratis, MIT |
Analizar gramaticalmente | LR (1) | BNF en tipos C ++ | ? | ? | ninguno | Compilador estándar de C ++ 11 | No | Gratis, MIT |
GGLL | LL (1) | Grafico | Java | Mezclado | generado | Ventanas | sí | Gratis, MIT |
Producto | Algoritmo de análisis | Entrada de notación gramatical | Idiomas de salida | Gramática, código | Lexer | Plataforma de desarrollo | IDE | Licencia |
Análisis de gramáticas de expresión, gramáticas booleanas deterministas
Esta tabla compara generadores de analizadores sintácticos con gramáticas de expresión de análisis , gramáticas booleanas deterministas .
Nombre | Algoritmo de análisis | Idiomas de salida | Gramática, código | Plataforma de desarrollo | Licencia |
---|---|---|---|---|---|
AustenX | Packrat (modificado) | Java | Separar | Todas | Gratis, BSD |
Uro | Paquete de la rata | C , OCaml , Java | Mezclado | Todas | Gratis, GNU GPL |
BNFlite | Descenso recursivo | C ++ | Mezclado | Todas | Gratis, MIT |
Pabellón | Paquete de la rata | Java , JavaScript , Python , Ruby | Separar | Todas | Gratis, GNU GPL |
CL-clavija | Paquete de la rata | Lisp común | Mezclado | Todas | Gratis, MIT |
¡Maldita sea! | Paquete de la rata | D | Mezclado | Todas | Gratis, GNU GPL |
Frisby | Paquete de la rata | Haskell | Mezclado | Todas | Gratis, BSD |
gramática :: peg | Paquete de la rata | Tcl | Mezclado | Todas | Gratis, BSD |
Grako | Packrat + Cut + Recursividad izquierda | Python , C ++ (beta) | Separar | Todas | Gratis, BSD |
IronMeta | Paquete de la rata | C# | Mezclado | Ventanas | Gratis, BSD |
Laja | Scannerless de arriba hacia abajo de 2 fases backtracking + soporte de ejecución | Java | Separar | Todas | Gratis, GNU GPL |
lars :: Analizador | Packrat (apoya la recursividad por la izquierda y la ambigüedad gramatical) | C ++ | Idéntico | Todas | Gratis, BSD |
LPeg | Máquina de análisis | Lua | Mezclado | Todas | Gratis, MIT |
arrastrar | Máquina de análisis | C ++ 17 | Mezclado | Todas | Gratis, MIT |
Ratón | Descenso recursivo | Java | Separar | Máquina virtual de Java | Gratis, Apache 2.0 |
Narval | Paquete de la rata | C | Mezclado | POSIX , ventanas | Gratis, BSD |
Nearley | Earley | JavaScript | Mezclado | Todas | Gratis, MIT |
Nemerle.Peg | Descenso recursivo + Pratt | Nemerle | Separar | Todas | Gratis, BSD |
neotoma | Paquete de la rata | Erlang | Separar | Todas | Gratis, MIT |
NPEG | Descenso recursivo | C# | Mezclado | Todas | Gratis, MIT |
OMeta | Packrat (modificado, memorización parcial) | JavaScript , chirrido , Python | Mezclado | Todas | Gratis, MIT |
PackCC | Packrat (modificado, soporte de recursividad por la izquierda) | C | Mezclado | Todas | Gratis, MIT |
Paquete de la rata | Paquete de la rata | Esquema | Mezclado | Todas | Gratis, MIT |
Papá | Paquete de la rata | Haskell | Mezclado | Todas | Gratis, BSD |
sancochado | Descenso recursivo | Java , Scala | Mezclado | Máquina virtual de Java | Gratis, Apache 2.0 |
Lambda PEG | Descenso recursivo | Java | Mezclado | Máquina virtual de Java | Gratis, Apache 2.0 |
parsepp | Descenso recursivo | C ++ | Mezclado | Todas | Libre, dominio público |
Chirivía | Paquete de la rata | C ++ | Mezclado | Ventanas | Gratis, GNU GPL |
Patrones | Máquina de análisis | Rápido | Idéntico | Todas | Gratis, MIT |
clavija | Descenso recursivo | C | Mezclado | Todas | Gratis, MIT |
PEG.js | Packrat (memorización parcial) | JavaScript | Mezclado | Todas | Gratis, MIT |
Pegaso | Descenso recursivo, Packrat (selectivamente) | C# | Mezclado | Ventanas | Gratis, MIT |
pegc | Descenso recursivo | C | Mezclado | Todas | Libre, dominio público |
parásito | Descenso recursivo | Oxido | Separar | Todas | Libre, MPL |
PetitParser | Paquete de la rata | Smalltalk , Java , Dardo | Mezclado | Todas | Gratis, MIT |
PEGTL | Descenso recursivo | C ++ 11 | Mezclado | Todas | Gratis, MIT |
Motor de gramática del analizador (PGE) | Descenso recursivo híbrido / precedencia del operador [7] | Código de bytes de loro | Mezclado | Máquina virtual Parrot | Gratis, Artístico 2.0 |
PyPy rlib | Paquete de la rata | Pitón | Mezclado | Todas | Gratis, MIT |
¡Ratas! | Paquete de la rata | Java | Mezclado | Máquina virtual de Java | Gratis, GNU LGPL |
Espíritu2 | Descenso recursivo | C ++ | Mezclado | Todas | Gratis, Boost |
Copa del árbol | Descenso recursivo | Rubí | Mezclado | Todas | Gratis, MIT |
Yarda | Descenso recursivo | C ++ | Mezclado | Todas | Gratis, MIT o dominio público |
Waxeye | Máquina de análisis | C , Java , JavaScript , Python , Racket , Ruby | Separar | Todas | Gratis, MIT |
PHP PEG | Analizador PEG? | PHP | Mezclado | Todas | Gratis, BSD |
Lenguajes generales libres de contexto, conjuntivos o booleanos
Esta tabla compara los lenguajes generadores de analizadores sintácticos con una gramática general libre de contexto , una gramática conjuntiva o una gramática booleana .
Nombre | Algoritmo de análisis | Entrada de notación gramatical | Idiomas de salida | Gramática, código | Lexer | Plataforma de desarrollo | IDE | Licencia |
---|---|---|---|---|---|---|---|---|
ACENTO | Earley | Variante de yacc | C | Mezclado | externo | Todas | No | Gratis, GNU GPL |
APAGADO | GLR , LALR (1), LL (k) | ? | D | Mezclado | generado | Todas | No | Libre, Artístico |
Bisonte | LALR (1), LR (1), IELR (1), GLR | Yacc | C , C ++ , Java , XML | Mixto, excepto XML | externo | Todas | No | Gratis, GNU GPL |
Kit de herramientas de reingeniería de software DMS | GLR | ? | Parlanse | Mezclado | generado | Ventanas | No | Propiedad |
DParser | GLR sin escáner | ? | C | Mezclado | sin escáner | POSIX | No | Gratis, BSD |
Dypgen | GLR extensible en tiempo de ejecución | ? | OCaml | Mezclado | generado | Todas | No | Libre, CeCILL -B |
E3 | Earley | ? | OCaml | Mezclado | externo o sin escáner | Todas | No | ? |
Elkhound | GLR | ? | C ++ , OCaml | Mezclado | externo | Todas | No | Gratis, BSD |
GDK | LALR (1), GLR | ? | C , Lex , Haskell , HTML , Java , Object Pascal , Yacc | Mezclado | generado | POSIX | No | Gratis, MIT |
Contento | LALR , GLR | ? | Haskell | Mezclado | externo | Todas | No | Gratis, BSD |
Generador Hime Parser | GLR | ? | C # , Java , óxido | Separar | generado | .NET Framework , máquina virtual Java | No | Gratis, GNU LGPL |
Biblioteca de IronText | LALR (1), GLR | C# | C# | Mezclado | generado o externo | .NET Framework | No | Gratis, Apache 2.0 |
Jison | LALR (1), LR (0), SLR (1) | Yacc | JavaScript , C # , PHP | Mezclado | generado | Todas | No | Gratis, MIT |
Sintaxis | LALR (1), LR (0), SLR (1) CLR (1) LL (1) | JSON / Yacc | JavaScript , Python , PHP , Ruby , C ++ , C # , Rust , Java | Mezclado | generado | Todas | No | Gratis, MIT |
Laja | Sin escáner, dos fases | Laja | Java | Separar | sin escáner | Todas | No | Gratis, GNU GPL |
ModeloCC | Earley | Modelo de clase anotado | Java | Generado | generado | Todas | No | Gratis, BSD |
P3 | Combinadores Earley | Tipo BNF | OCaml | Mezclado | externo o sin escáner | Todas | No | ? |
P4 | Combinadores Earley, CFG infinitarios | Tipo BNF | OCaml | Mezclado | externo o sin escáner | Todas | No | ? |
Analizador booleano sin escáner | GLR sin escáner ( gramáticas booleanas ) | ? | Haskell , Java | Separar | sin escáner | Máquina virtual de Java | No | Gratis, BSD |
SDF / SGLR | GLR sin escáner | SDF | C , Java | Separar | sin escáner | Todas | sí | Gratis, BSD |
SmaCC | GLR (1), LALR (1), LR (1) | ? | Charla | Mezclado | interno | Todas | sí | Gratis, MIT |
CHISPA - CHISPEAR | Earley | ? | Pitón | Mezclado | externo | Todas | No | Gratis, MIT |
Tomás | GLR | ? | C | Generado | ninguno | Todas | No | Gratis, "Sin restricciones de derechos de autor ni licencias" |
UltraGram | LALR , LR , GLR | ? | C ++ , C # , Java , Visual Basic .NET | Separar | generado | Ventanas | sí | Propiedad |
Agujero de gusano | Poda , LR , GLR , GLR sin escáner | ? | C , Python | Mezclado | sin escáner | Ventanas | No | Gratis, MIT |
Cría de ballena | Tabular general, SLL (k), forma normal lineal ( gramáticas conjuntivas ), LR , forma normal binaria ( gramáticas booleanas ) | ? | C ++ | Separar | externo | Todas | No | Propiedad |
yaep | Earley | Yacc- like | C | Mezclado | externo | Todas | No | Gratis, GNU LGPL |
Gramáticas sensibles al contexto
Esta tabla compara generadores de analizadores sintácticos con gramáticas sensibles al contexto .
Nombre | Algoritmo de análisis | Entrada de notación gramatical | Habilidades gramaticales booleanas | Plataforma de desarrollo | Licencia |
---|---|---|---|---|---|
LuZc [8] [9] | cadena delta | modular | Conjuntivo, no complementario | POSIX | Propiedad |
bnf2xml | Descenso recursivo (la salida de un filtro de texto es xml) | BNF simple [ aclaración necesaria ] gramática (coincidencia de entrada), la salida es xml | ? | Beta, y no un analizador EBNF completo | Gratis, GNU GPL |
Ver también
- Compilador-compilador
- Lista de sistemas de transformación de programas
Notas
- ^ Tenedor Bison 1.19
Referencias
- ^ http://www.colm.net/open-source/ragel/
- ^ http://www.colm.net/open-source/ragel/ [ verificación necesaria ]
- ^ "Análisis adaptativo LL (*): el poder del análisis dinámico" (PDF) . Terence Parr . Consultado el 3 de abril de 2016 .
- ^ "Construyendo analizadores para la web con JavaCC y GWT (Parte uno)" . Chris Ainsley . Consultado el 4 de mayo de 2014 .
- ^ "El SLK Parser Generator es compatible con C, C ++, Java, JavaScript y C #, retroceso opcional, gratis" .
- ^ http://www.slkpg.site/license.txt
- ^ "Parrot: Grammar Engine" . La Fundación Parrot. 2011. Las
reglas PGE brindan todo el poder del análisis sintáctico de descenso recursivo y el análisis sintáctico de precedencia de operadores.
- ^ "LuZ: un analizador sensible al contexto" . 2016-10-17. Archivado desde el original el 17 de octubre de 2016 . Consultado el 17 de octubre de 2018 .
- ^ "LuZc - un analizador sensible al contexto conjuntivo" . luzc.zohosites.com . Consultado el 17 de octubre de 2018 .
enlaces externos
- El catálogo de herramientas de construcción del compilador
- Generadores de analizadores de código abierto en Java