From d9494c07ad3a89a2435b0a6306dc634cf5a346e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Wed, 26 Oct 2016 12:12:57 +0200 Subject: Add parser states graph --- .gitignore | 1 + Makefile | 9 +++++++-- docs/evaluation.md | 1 + docs/parser-states.dot | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 docs/parser-states.dot diff --git a/.gitignore b/.gitignore index a9764c2..05a7b15 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ geml *.y.c *.y.h *.gperf.h +*.dot.png diff --git a/Makefile b/Makefile index 8ababfe..78414f4 100644 --- a/Makefile +++ b/Makefile @@ -87,18 +87,23 @@ distclean:: clean @echo " CLEAN configuration" $(Q)$(RM) $(O)/.config +docs/%.dot.png: docs/%.dot + @echo " DOT $@" + $(Q)dot -Tpng -O $< + .PHONY: docs -docs: +docs: docs/parser-states.dot.png @echo " DOC $@" $(Q)mkdocs build .PHONY: serve-docs -serve-docs: +serve-docs: docs/parser-states.dot.png $(Q)mkdocs serve .PHONY: clean-docs clean-docs: @echo " CLEAN docs" + $(Q)$(RM) docs/parser-states.dot.png $(Q)$(RM) -r site ifeq (,$(filter clean distclean help docs serve-docs clean-docs \ diff --git a/docs/evaluation.md b/docs/evaluation.md index 04d8854..055e4ec 100644 --- a/docs/evaluation.md +++ b/docs/evaluation.md @@ -1,2 +1,3 @@ Evaluation process ================== +[Parser states](parser-states.dot.png) diff --git a/docs/parser-states.dot b/docs/parser-states.dot new file mode 100644 index 0000000..16d714f --- /dev/null +++ b/docs/parser-states.dot @@ -0,0 +1,35 @@ +digraph ParserStates { +label="Parser states"; + +init [label="Init"]; +disabled [label="Parser disabled"]; +error [label="Error"]; + +init -> disabled [label="If _EVAEN is not empty"]; +init -> Parser [label="If _EVAEN is empty"]; +Parser -> disabled [label="_EVADI located"]; +disabled -> Parser [label="_EVAEN located"]; + +Parser { +nomacro [label="No macro"]; +macro_start [label="Macro/command start"]; +macro [label="Macro/command located"]; +args [label="Arguments"]; +expansion [label="Macro/command expansion (Secondary parser)"]; + +Parser -> nomacro [style="dotted"]; +expansion -> Parser [style="dotted"]; +nomacro -> macro_start [label="_INIT located"]; +macro_start -> macro [label="_MACR matches text after _INIT"]; +macro_start -> error [label="else"]; +macro -> args [label="_ARGST matches after _MACR"]; +args -> args [label="_ARGSE localted"]; +args -> macro_start [label="_INIT located"]; +args -> expansion [label="_ARGEN located"]; +macro -> expansion [label="else"]; +expansion -> args [label="If some macro arguments are still opened"]; +expansion -> nomacro [label="If last opened macro argument was closed"]; + +} + +} -- cgit v1.2.3