【LaTex树状图】LaTex画树状图_编译原理语法树_直角分叉_Forking links

语法树语法树

过程

使用Overleaf在线编辑LaTex,由于使用汉字ctex包,需在overleaf中将编译器换成XeLaTex(界面左上角Menu→Compiler→XeLaTex)。
详细语法参考VisualTikZ.pdf
Forking links

题目

2-6 设已给文法G[<程序>]:
<程序>→<分程序>|<复合语句>
<分程序>→<无标号分程序>|<标号>:<分程序>
<复合语句>→<无标号复合语句>|<标号>:<复合语句>
<无标号分程序>→<分程序首部>;<复合尾部>
<无标号复合语句>→begin<复合尾部>
<分程序首部>→begin<说明>|<分程序首部>;<说明>
<复合尾部>→<语句>end|<语句>;<复合尾部>
<说明>→d
<语句>→s
<标号>→L
(1)给出以下句子
L:L:begin d;d;s;s end
的最左推导和最右推导。
(2)画出上述句子的语法树。

LaTex代码

\documentclass{
    
    standalone}
\usepackage[UTF8]{
    
    ctex} %中文
\usepackage{
    
    tikz} %LaTex tikz包
\usetikzlibrary{
    
    trees}
\begin{
    
    document}
  \begin{
    
    tikzpicture}[level distance=10em, 
    T/.style={
    
    edge from parent fork #1, grow=#1, level distance=4em, sibling distance=4em, -}]
    \node {
    
    <程序>}
    [T=down]
    child{
    
    node{
    
    <分程序>}
        child{
    
    node{
    
    <标号>}
            child{
    
    node{
    
    L}}
            } 
        child{
    
    node{
    
    :}} 
        child{
    
    node{
    
    <分程序>}
            child{
    
    node{
    
    <标号>}
                child{
    
    node{
    
    L}}
                } 
            child{
    
    node{
    
    :}} 
            child{
    
    node{
    
    <分程序>}
                child{
    
    node{
    
    <无标号分程序>}[sibling distance=7em]
                    child{
    
    node{
    
    <分程序首部>}[sibling distance=4em]
                        child{
    
    node{
    
    <分程序首部>}
                            child{
    
    node{
    
    begin}}
                            child{
    
    node{
    
    <说明>}
                                child{
    
    node{
    
    d}}
                            }
                            }
                        child{
    
    node{
    
    ;}}
                        child{
    
    node{
    
    <说明>}
                            child{
    
    node{
    
    d}}
                            }
                        }
                    child{
    
    node{
    
    ;}}
                    child{
    
    node{
    
    <复合尾部>}[sibling distance=4em]
                        child{
    
    node{
    
    <语句>}
                                child{
    
    node{
    
    s}}
                            }
                        child{
    
    node{
    
    ;}}
                        child{
    
    node{
    
    <复合尾部>}
                            child{
    
    node{
    
    <语句>}
                                child{
    
    node{
    
    s}}
                                }
                            child{
    
    node{
    
    end}}
                            }
                        }
                    }
                }
            }
        };
  \end{
    
    tikzpicture} 
\end{
    
    document}

猜你喜欢

转载自blog.csdn.net/weixin_49986678/article/details/126844785